INSERT
INSERT
INSERT 함수는 지정한 위치에서 시작하는 지정한 길이의 부분 문자열을 새 문자열 또는 이진(binary) 값으로 교체하는 함수예요.
본문
이 함수는 INSERT DML 명령과 혼동하지 마세요.
카테고리: String & binary 함수 (General)
구문 (Syntax)
INSERT( <base_expr>, <pos>, <len>, <insert_expr> )
인자 (Arguments)
<base_expr> — 문자를 삽입/교체하려는 문자열 또는 BINARY 표현식이에요.
<pos> — 문자 삽입을 시작할 오프셋이에요. 0이 아닌 1부터 시작해요. 즉 문자열의 첫 번째 문자는 위치 0이 아니라 위치 1로 간주돼요. 예를 들어 문자열 시작 부분에 삽입하려면 pos를 1로 설정해요. 유효한 값은 1부터 문자열 길이의 하나 더 큰 값까지(포함)예요. pos를 문자열 길이의 하나 더 큰 값으로 설정하면 작업이 추가(append)와 동일해져요. (또한 마지막 문자를 지나 어떤 문자도 삭제하면 안 되므로 len 매개변수가 0이어야 해요.)
<len> — pos에서 시작해 교체할 문자 수예요. 유효한 값은 0부터 pos와 문자열 끝 사이의 문자 수까지예요. 0이면 기존 문자를 삭제하지 않고 새 문자를 추가한다는 뜻이에요.
<insert_expr> — base_expr에 삽입할 문자열이에요. 이 문자열이 비어 있고 len이 0보다 크다면, 사실상 삭제 작업이 돼요(일부 문자가 삭제되고 추가되는 문자는 없음).
사용 시 유의사항 (Usage notes)
base_expr와insert_expr는 같은 데이터 타입이어야 해요. 둘 다 문자열(예: VARCHAR)이거나 둘 다 이진(binary)이어야 해요.- 인자 중 하나라도 NULL이면 반환되는 값은 NULL이에요.
반환값 (Returns)
base_expr의 복사본을 만들고, pos에서 시작해 len개 문자를 삭제한 뒤 pos에 insert_expr을 삽입한 것과 같은 문자열 또는 BINARY를 반환해요. 원래 입력 base_expr는 변경되지 않으며, 함수는 별도의(수정된) 복사본을 반환한다는 점을 유의해요.
예시 (Examples)
간단한 예시예요:
SELECT INSERT('abc', 1, 2, 'Z') as STR;
+-----+
| STR |
|-----|
| Zc |
+-----+
이 예시는 교체 문자열의 길이가 교체되는 부분 문자열의 길이와 다를 수 있음을 보여줘요:
SELECT INSERT('abcdef', 3, 2, 'zzz') as STR;
+---------+
| STR |
|---------|
| abzzzef |
+---------+
교체 문자열이 비어 있을 때 어떤 일이 일어나는지 보여줘요(함수가 시작 위치에서 지정한 수의 문자를 삭제하고 어떤 문자도 추가하지 않음):
SELECT INSERT('abc', 2, 1, '') as STR;
+-----+
| STR |
|-----|
| ac |
+-----+
원래 문자열의 마지막 문자 바로 뒤에 문자를 추가해 INSERT를 추가(append) 작업으로 사용해요:
SELECT INSERT('abc', 4, 0, 'Z') as STR;
+------+
| STR |
|------|
| abcZ |
+------+
다음은 모두 인자 중 하나 이상이 NULL이므로 NULL을 반환해요:
SELECT INSERT(NULL, 1, 2, 'Z') as STR;
+------+
| STR |
|------|
| NULL |
+------+
SELECT INSERT('abc', NULL, 2, 'Z') as STR;
+------+
| STR |
|------|
| NULL |
+------+
SELECT INSERT('abc', 1, NULL, 'Z') as STR;
+------+
| STR |
|------|
| NULL |
+------+
SELECT INSERT('abc', 1, 2, NULL) as STR;
+------+
| STR |
|------|
| NULL |
+------+