카테고리:

문자열 및 이진 함수 (일반)

INSERT

지정된 위치에서 시작하여, 지정된 길이의 하위 문자열을 새 문자열 또는 이진 값으로 바꿉니다.

이 함수를 INSERT DML 명령과 혼동해서는 안 됩니다.

구문

INSERT( <base_expr>, <pos>, <len>, <insert_expr> )
Copy

인자

base_expr

문자를 삽입/바꾸려는 문자열 또는 BINARY 식입니다.

pos

문자 삽입을 시작할 오프셋입니다 0이 아니라 1부터 시작합니다. 즉, 문자열의 첫 번째 문자는 위치 0이 아닌 위치 1에 있는 것으로 간주됩니다. 예를 들어, 문자열의 시작 부분에 삽입하려면 pos 를 1로 설정하십시오.

유효한 값은 1에서, 문자열 길이보다 1만큼 더 큰 값(해당 값 포함) 사이입니다.

pos 를 문자열 길이보다 1만큼 더 크게 설정하면 이 작업은 추가와 동일합니다. (또한 마지막 문자 이후의 문자를 삭제하려고 하면 안 되므로 len 매개 변수가 0이어야 합니다.)

len

바꿀 문자의 수입니다(pos 에서 시작). 유효한 값의 범위는 0에서, pos 와 문자열 끝 사이의 문자 수입니다. 이 값이 0인 경우, 기존 문자를 삭제하지 않고 새 문자를 추가한다는 의미입니다.

insert_expr

base_expr 에 삽입할 문자열입니다. 이 문자열이 비어 있고 len 가 0보다 크면 이 작업은 사실상 삭제가 됩니다(일부 문자는 삭제되고 아무것도 추가되지 않음).

사용법 노트

  • base_exprinsert_expr 은 동일한 데이터 타입이어야 합니다. 둘 다 문자열(예: VARCHAR)이거나 둘 다 이진이어야 합니다.

  • 인자 중 하나라도 NULL인 경우, 반환된 값은 NULL입니다.

반환

base_expr 의 복사본을 만들고, len 에서 시작하는 pos 문자를 삭제한 다음, insert_exprpos 를 삽입하는 것과 동일한 문자열 또는 BINARY 를 반환합니다.

원래 입력 base_expr 은 변경되지 않습니다. 함수는 별도의(수정된) 복사본을 반환합니다.

이는 간단한 예입니다.

SELECT INSERT('abc', 1, 2, 'Z') as STR;
+-----+
| STR |
|-----|
| Zc  |
+-----+
Copy

이 예는 대체되는 하위 문자열의 길이와 대체 문자열의 길이가 다를 수 있음을 보여줍니다.

SELECT INSERT('abcdef', 3, 2, 'zzz') as STR;
+---------+
| STR     |
|---------|
| abzzzef |
+---------+
Copy

이는 대체 문자열이 비어 있을 때 어떤 일이 발생하는지 보여줍니다(함수는 시작 위치에서 시작하여, 지정된 수의 문자를 삭제하며 문자를 추가하지 않습니다).

SELECT INSERT('abc', 2, 1, '') as STR;
+-----+
| STR |
|-----|
| ac  |
+-----+
Copy

이는 원래 문자열의 마지막 문자 바로 뒤에 문자를 추가하여 INSERT 를 추가 작업으로서 사용합니다.

SELECT INSERT('abc', 4, 0, 'Z') as STR;
+------+
| STR  |
|------|
| abcZ |
+------+
Copy

인자 중 하나 이상이 NULL이므로 다음은 모두 NULL을 반환합니다.

SELECT INSERT(NULL, 1, 2, 'Z') as STR;
+------+
| STR  |
|------|
| NULL |
+------+
Copy
SELECT INSERT('abc', NULL, 2, 'Z') as STR;
+------+
| STR  |
|------|
| NULL |
+------+
Copy
SELECT INSERT('abc', 1, NULL, 'Z') as STR;
+------+
| STR  |
|------|
| NULL |
+------+
Copy
SELECT INSERT('abc', 1, 2, NULL) as STR;
+------+
| STR  |
|------|
| NULL |
+------+
Copy