- 카테고리:
문자열 및 이진 함수 (일치/비교)
POSITION¶
두 번째 인자에서 첫 번째 인자의 첫 번째 발생을 검색하고, 성공하는 경우 두 번째 인자에서 첫 번째 인자의 위치(1부터 시작)를 반환합니다.
첫 번째 발생 이후의 위치(예: 세 번째 발생 위치)를 찾아야 하는 경우 REGEXP_INSTR 함수를 사용할 수 있습니다.
- 별칭:
-
CHARINDEX 함수는 POSITION이 지원하는 구문 변형 중 하나를 지원하지 않습니다.
구문¶
POSITION( <expr1>, <expr2> [ , <start_pos> ] )
POSITION( <expr1> IN <expr2> )
인자¶
필수:
expr1
찾을 값을 나타내는 문자열 또는 이진 식입니다.
expr2
검색할 값을 나타내는 문자열 또는 이진 식입니다.
선택 사항:
start_pos
검색을 시작할 위치를 나타내는 숫자입니다(
1
은expr2
의 시작을 나타냄).기본값:
1
반환¶
이 함수는 NUMBER 형식의 값을 반환합니다.
인자 중 하나라도 NULL이면 이 함수는 NULL을 반환합니다.
사용법 노트¶
문자열 또는 이진 값을 찾을 수 없는 경우, 함수는 다음을
0
을 반환합니다.지정된 선택적
start_pos
가 두 번째 인자(검색할 문자열)의 끝을 벗어나는 경우, 함수는0
을 반환합니다.첫 번째 인자가 비어 있는 경우(예: 빈 문자열), 함수는
1
을 반환합니다.처음 두 인자의 데이터 타입은 같아야 합니다(두 개의 문자열 또는 두 개의 이진 값).
데이터 정렬 세부 정보¶
이 함수는 다음 데이터 정렬 사양을 지원하지 않습니다.
pi
(구두점 구분 안 함).cs-ai
(대/소문자 구분, 악센트 구분 안 함).
예¶
다음 예제에서는 POSITION 함수를 사용합니다.
VARCHAR 식¶
‘banana’에서 ‘an’의 첫 번째 발생을 찾습니다.
SELECT POSITION('an', 'banana', 1);
+-----------------------------+
| POSITION('AN', 'BANANA', 1) |
|-----------------------------|
| 2 |
+-----------------------------+
위치 3에서 또는 그 이후에 ‘banana’에서 ‘an’의 첫 번째 발생을 찾습니다. 이 검색은 ‘an’의 두 번째 발생을 찾습니다.
SELECT POSITION('an', 'banana', 3);
+-----------------------------+
| POSITION('AN', 'BANANA', 3) |
|-----------------------------|
| 4 |
+-----------------------------+
문자열에서 유니코드 문자를 포함한 다양한 문자를 검색합니다.
SELECT n, h, POSITION(n IN h) FROM pos;
+--------+---------------------+------------------+
| N | H | POSITION(N IN H) |
|--------+---------------------+------------------|
| | | 1 |
| | sth | 1 |
| 43 | 41424344 | 5 |
| a | NULL | NULL |
| dog | catalog | 0 |
| log | catalog | 5 |
| lésine | le péché, la lésine | 14 |
| nicht | Ich weiß nicht | 10 |
| sth | | 0 |
| ☃c | ☃a☃b☃c☃d | 5 |
| ☃☃ | bunch of ☃☃☃☃ | 10 |
| ❄c | ❄a☃c❄c☃ | 5 |
| NULL | a | NULL |
| NULL | NULL | NULL |
+--------+---------------------+------------------+
BINARY 식¶
아래 값은 16진수 표현이므로 단일 BINARY 바이트는 두 개의 16진수로 표현됩니다.
이 예에서 반환된 값은 3
입니다. ‘EF’가 세 번째 바이트와 일치하기 때문입니다(첫 번째 바이트는 ‘AB’, 두 번째 바이트는 ‘CD’, 세 번째 바이트는 ‘EF’).
SELECT POSITION(X'EF', X'ABCDEF');
+----------------------------+
| POSITION(X'EF', X'ABCDEF') |
|----------------------------|
| 3 |
+----------------------------+
이 예에서는 일치하는 항목이 없습니다. 시퀀스 ‘BC’는 검색되는 값에 있는 것처럼 보이지만, ‘B’는 첫 번째 바이트의 두 번째 니블이고 ‘C’는 두 번째 바이트의 첫 번째 니블입니다. 실제로 ‘BC’를 포함하는 바이트가 없으므로, 반환된 값은 0
(찾을 수 없음)입니다.
SELECT POSITION(X'BC', X'ABCD');
+--------------------------+
| POSITION(X'BC', X'ABCD') |
|--------------------------|
| 0 |
+--------------------------+