Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL INSERT() 함수에서 'pos'가 문자열 길이 범위를 벗어나면 어떤 결과가 나올까?

MySQL의 INSERT() 함수는 삽입 위치(pos)가 원본 문자열의 길이 범위 안에 있지 않으면 아무런 삽입 작업도 수행하지 않고 원본 문자열을 그대로 반환합니다.

'pos'가 문자열 길이 범위를 벗어난 것으로 판단되는 경우는 다음과 같습니다.

  • 음수 값을 전달하는 경우
  • 0(영)을 전달하는 경우
  • 원본 문자열의 전체 문자 수보다 2 이상 큰 값을 전달하는 경우

아래 예시를 통해 각 경우를 자세히 살펴보겠습니다.

예제 1: pos가 음수인 경우

다음 쿼리는 'pos'가 음수(-1)이므로 문자열 길이 범위를 벗어나, 삽입이 수행되지 않습니다.

mysql> Select INSERT('Tutorialspoint',-1,4,'.com');
+--------------------------------------+
| INSERT('Tutorialspoint',-1,4,'.com') |
+--------------------------------------+
| Tutorialspoint                       |
+--------------------------------------+
1 row in set (0.00 sec)

예제 2: pos가 0인 경우

다음 쿼리는 'pos'가 0(영)이므로 유효한 위치가 아니기 때문에 삽입이 수행되지 않습니다.

mysql> Select INSERT('Tutorialspoint',0,4,'.com');
+-------------------------------------+
| INSERT('Tutorialspoint',0,4,'.com') |
+-------------------------------------+
| Tutorialspoint                      |
+-------------------------------------+
1 row in set (0.00 sec)

예제 3: pos가 문자열 길이를 초과하는 경우

다음 쿼리는 'pos' 값이 원본 문자열의 문자 수보다 2만큼 크기 때문에 삽입이 수행되지 않습니다. 아래 예시에서 원본 문자열 'Tutorialspoint'는 14개의 문자로 이루어져 있는데, 위치 값으로 16을 지정했으므로 유효 범위를 벗어나 삽입 없이 원본 문자열이 그대로 반환됩니다.

mysql> Select INSERT('Tutorialspoint',16,4,'.com');
+--------------------------------------+
| INSERT('Tutorialspoint',16,4,'.com') |
+--------------------------------------+
| Tutorialspoint                       |
+--------------------------------------+
1 row in set (0.00 sec)

정리하면, MySQL의 INSERT() 함수에서 삽입 위치가 유효하지 않은 경우 에러가 발생하지 않고 조용히 원본 문자열을 반환한다는 점을 기억해 두면 유용합니다. 반면 pos가 정확히 문자열 길이 + 1인 경우에는 newstr이 문자열 끝에 추가되므로, 경계값 처리 시 주의가 필요합니다.