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

MySQL INSERT() 함수에서 'len'이 나머지 문자열 길이를 초과하면 어떻게 될까?

MySQL의 INSERT(str, pos, len, newstr) 함수는 원본 문자열(str)에서 pos 위치부터 len 길이만큼의 문자를 제거하고, 그 자리에 newstr을 삽입한 새로운 문자열을 반환하는 함수입니다.

그렇다면 len 값이 pos 위치 이후에 남아 있는 문자열의 실제 길이보다 클 경우에는 어떻게 처리될까요? 이 경우 MySQL은 오류를 발생시키지 않습니다. 대신 pos 위치부터 원본 문자열의 끝까지 남아 있는 모든 문자를 제거한 뒤, 그 자리에 newstr을 삽입한 결과를 반환합니다.

예제

mysql> Select INSERT('myteststring',3,15,'name');
+------------------------------------+
| INSERT('myteststring',3,15,'name') |
+------------------------------------+
| myname                             |
+------------------------------------+
1 row in set (0.00 sec)

결과 분석

위 예제에서 'myteststring'은 총 12자로 구성되어 있습니다. 시작 위치(pos)가 3이므로, 위치 3부터 문자열 끝인 위치 12까지는 'teststring'으로 총 10자가 남아 있습니다. 그러나 len 값이 15로 지정되어 있어 남은 길이인 10자를 초과합니다.

이처럼 len이 나머지 문자열의 길이 범위를 벗어나면, MySQL은 지정된 len만큼 정확히 잘라내는 대신 위치 3부터 문자열 끝('teststring')까지 전부 제거하고 그 자리에 'name'을 삽입합니다. 그 결과 최종 출력값은 'my' + 'name' = 'myname'이 됩니다.

함께 알아두면 좋은 동작 방식

  • pos가 문자열 길이 범위를 벗어나는 경우: 아무런 변경 없이 원본 문자열이 그대로 반환됩니다.
  • 인수 중 하나라도 NULL인 경우: 함수는 NULL을 반환합니다.

즉, INSERT() 함수는 경계 조건에서도 오류를 발생시키지 않고 안전하게 동작하며, len이 초과될 때는 자동으로 문자열 끝까지 교체하는 것이 핵심 동작 규칙입니다.