- 카테고리:
문자열 및 이진 함수 (일치/비교)
CHARINDEX¶
두 번째 인자에서 첫 번째 인자의 첫 번째 발생을 검색하고, 성공하는 경우 두 번째 인자에서 첫 번째 인자의 위치(1부터 시작)를 반환합니다.
- 별칭:
-
CHARINDEX 함수는 POSITION이 지원하는 구문 변형 중 하나를 지원하지 않습니다.
구문¶
CHARINDEX( <expr1>, <expr2> [ , <start_pos> ] )
인자¶
필수:
expr1
찾을 값을 나타내는 문자열 또는 이진 식입니다.
expr2
검색할 값을 나타내는 문자열 또는 이진 식입니다.
선택 사항:
start_pos
검색을 시작할 위치를 나타내는 숫자입니다(
1
은expr2
의 시작을 나타냄).기본값:
1
사용법 노트¶
어느 인자가 NULL인 경우, 함수는 NULL을 반환합니다.
문자열 또는 이진 값을 찾을 수 없는 경우, 함수는 다음을
0
을 반환합니다.지정된 선택적
start_pos
가 두 번째 인자(검색할 문자열)의 끝을 벗어나는 경우, 함수는0
을 반환합니다.첫 번째 인자가 비어 있는 경우(예: 빈 문자열), 함수는
1
을 반환합니다.처음 두 인자의 데이터 타입은 동일해야 합니다. 즉, 둘 다 문자열이거나 둘 다 이진 값이어야 합니다.
데이터 정렬 세부 정보¶
이 함수는 다음 데이터 정렬 사양을 지원하지 않습니다.
pi
(구두점 구분 안 함).cs-ai
(대/소문자 구분, 악센트 구분 안 함).
참고
upper
또는 lower
데이터 정렬 지정자가 있는 열에 이 함수를 사용하려면 계정에서 2024_02 동작 변경 번들을 활성화 해야 합니다.
계정에서 이 번들을 활성화하려면 다음 문을 실행하십시오.
SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
예¶
VARCHAR 식¶
‘banana’에서 ‘an’의 첫 번째 발생을 찾습니다.
select charindex('an', 'banana', 1); +------------------------------+ | CHARINDEX('AN', 'BANANA', 1) | |------------------------------| | 2 | +------------------------------+
위치 3에서 또는 그 이후에 ‘banana’에서 ‘an’의 첫 번째 발생을 찾습니다. 이 검색은 ‘an’의 두 번째 발생을 찾습니다.
select charindex('an', 'banana', 3); +------------------------------+ | CHARINDEX('AN', 'BANANA', 3) | |------------------------------| | 4 | +------------------------------+
문자열에서 유니코드 문자를 포함한 다양한 문자를 검색합니다.
SELECT n, h, CHARINDEX(n, h) FROM pos; +--------+---------------------+-----------------+ | N | H | CHARINDEX(N, 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 CHARINDEX(X'EF', X'ABCDEF'); +-----------------------------+ | CHARINDEX(X'EF', X'ABCDEF') | |-----------------------------| | 3 | +-----------------------------+
이 예에서는 일치하는 항목이 없습니다. 시퀀스 ‘BC’는 검색되는 값에 있는 것처럼 보이지만, ‘B’는 첫 번째 바이트의 두 번째 니블이고 ‘C’는 두 번째 바이트의 첫 번째 니블입니다. 실제로 ‘BC’를 포함하는 바이트가 없으므로, 반환된 값은 0(찾을 수 없음)입니다.
SELECT CHARINDEX(X'BC', X'ABCD'); +---------------------------+ | CHARINDEX(X'BC', X'ABCD') | |---------------------------| | 0 | +---------------------------+