- 카테고리:
문자열 및 이진 함수 (일반)
SPLIT_PART¶
지정된 문자에서 주어진 문자열을 분할하고, 요청된 부분을 반환합니다.
어떤 매개 변수가 NULL인 경우, NULL이 반환됩니다.
팁
검색 최적화 서비스를 사용하여 이 함수를 호출하는 쿼리의 성능을 향상할 수 있습니다. 자세한 내용은 검색 최적화 서비스 섹션을 참조하십시오.
- 참고 항목:
구문¶
SPLIT_PART(<string>, <delimiter>, <partNumber>)
인자¶
string
부분으로 분할할 텍스트입니다.
delimiter
분할 기준인 구분 기호를 나타내는 텍스트입니다.
partNumber
분할의 요청된 부분입니다(1부터 시작).
값이 음수이면 부분은 문자열 끝에서 거꾸로 계산됩니다.
사용법 노트¶
partNumber
가 범위를 벗어나는 경우, 반환된 값은 빈 문자열입니다.문자열이 구분 기호로 시작하거나 끝나는 경우, 시스템은 구분 기호 앞이나 뒤에 있는 빈 공간을 분할 결과의 유효한 부분으로 각각 간주합니다. 예를 보려면 아래의 예 섹션을 참조하십시오.
partNumber
가 0인 경우, 1로 처리됩니다. 즉, 분할의 첫 번째 요소를 가져옵니다. 인덱스가 1부터 시작하는지 0부터 시작하는지에 대한 혼동을 피하기 위해 Snowflake는 0을 1의 동의어로 사용하지 않을 것을 권장합니다.구분 기호가 빈 문자열인 경우, 분할 후 반환된 값은 입력 문자열입니다(문자열은 분할되지 않음).
데이터 정렬 세부 정보¶
The collation specifications of all input arguments must be compatible.
이 함수는 다음 데이터 정렬 사양을 지원하지 않습니다.
pi
(구두점 구분 안 함).cs-ai
(대/소문자 구분, 악센트 구분 안 함).
참고
upper
또는 lower
데이터 정렬 지정자가 있는 열에 이 함수를 사용하려면 계정에서 2024_02 동작 변경 번들을 활성화 해야 합니다.
계정에서 이 번들을 활성화하려면 다음 문을 실행하십시오.
SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
예¶
다른 partNumber
값에 의해 반환된 부분을 보여줍니다.
select 0, split_part('11.22.33', '.', 0) UNION select 1, split_part('11.22.33', '.', 1) UNION select 2, split_part('11.22.33', '.', 2) UNION select 3, split_part('11.22.33', '.', 3) UNION select 4, split_part('11.22.33', '.', 4) UNION select -1, split_part('11.22.33', '.', -1) UNION select -2, split_part('11.22.33', '.', -2) UNION select -3, split_part('11.22.33', '.', -3) UNION select -4, split_part('11.22.33', '.', -4) ; +----+---------------------------------+ | 0 | SPLIT_PART('11.22.33', '.', 0) | |----+---------------------------------| | 0 | 11 | | 1 | 11 | | 2 | 22 | | 3 | 33 | | 4 | | | -1 | 33 | | -2 | 22 | | -3 | 11 | | -4 | | +----+---------------------------------+
localhost IP 주소 127.0.0.1
의 첫 번째 및 마지막 부분을 반환합니다.
SELECT SPLIT_PART('127.0.0.1', '.', 1), SPLIT_PART('127.0.0.1', '.', -1); +---------------------------------+----------------------------------+ | SPLIT_PART('127.0.0.1', '.', 1) | SPLIT_PART('127.0.0.1', '.', -1) | |---------------------------------+----------------------------------| | 127 | 1 | +---------------------------------+----------------------------------+
세로 막대로 구분된 문자열의 첫 번째 및 두 번째 부분을 반환합니다. 구분 기호는 입력 문자열의 첫 번째 부분이므로 분할 후 첫 번째 요소는 빈 문자열입니다.
SELECT SPLIT_PART('|a|b|c|', '|', 1), SPLIT_PART('|a|b|c|', '|', 2); +-------------------------------+-------------------------------+ | SPLIT_PART('|A|B|C|', '|', 1) | SPLIT_PART('|A|B|C|', '|', 2) | |-------------------------------+-------------------------------| | | a | +-------------------------------+-------------------------------+
다음 예는 다중 문자 구분 기호를 보여줍니다.
SELECT SPLIT_PART('aaa--bbb-BBB--ccc', '--', 2); +------------------------------------------+ | SPLIT_PART('AAA--BBB-BBB--CCC', '--', 2) | |------------------------------------------| | bbb-BBB | +------------------------------------------+
다음 예는 구분 기호가 빈 문자열인 경우, 분할 후에도 여전히 하나의 문자열만 있음을 보여줍니다.
select 1, split_part('user@snowflake.com', '', 1) UNION select -1, split_part('user@snowflake.com', '', -1) UNION select 2, split_part('user@snowflake.com', '', 2) UNION select -2, split_part('user@snowflake.com', '', -2); +----+------------------------------------------+ | 1 | SPLIT_PART('USER@SNOWFLAKE.COM', '', 1) | |----+------------------------------------------| | 1 | user@snowflake.com | | -1 | user@snowflake.com | | 2 | | | -2 | | +----+------------------------------------------+