카테고리:

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

STRTOK

주어진 문자열을 토큰화하고, 요청된 부분을 반환합니다.

요청된 부분이 존재하지 않는 경우, NULL이 반환됩니다. 어떤 매개 변수가 NULL인 경우, NULL이 반환됩니다.

참고 항목:

SPLIT_PART

구문

STRTOK(<string> [,<delimiter>] [,<partNr>])
Copy

인자

필수:

string

토큰화할 텍스트입니다.

선택 사항:

delimiter

토큰화할 구분 기호 세트를 나타내는 텍스트입니다. 구분 기호 문자열의 각 문자는 구분 기호입니다. 구분 기호가 비어 있고 string 이 비어 있는 경우, 함수는 NULL을 반환합니다. 구분 기호가 비어 있고 string 이 비어 있지 않은 경우, 전체 문자열이 하나의 토큰으로 처리됩니다. 구분 기호의 기본값은 단일 공백 문자입니다.

partNr

1부터 시작하는 요청된 토큰입니다(즉, 첫 번째 토큰은 토큰 번호 0이 아니라 토큰 번호 1임). 토큰 번호가 범위를 벗어나면 NULL이 반환됩니다. 기본값은 1입니다.

반환

반환된 값의 데이터 타입은 VARCHAR 입니다.

사용법 노트

문자열이 구분 기호로 시작하거나 끝나는 경우, 시스템은 구분 기호 앞이나 뒤에 있는 빈 공간을 각각 유효 토큰으로 간주합니다.

Linux strtok()과 유사하게, STRTOK는 빈 문자열을 토큰으로 반환하지 않습니다.

다음은 STRTOK 를 사용하는 간단한 예입니다.

SELECT STRTOK('a.b.c', '.', 1);
+-------------------------+
| STRTOK('A.B.C', '.', 1) |
|-------------------------|
| a                       |
+-------------------------+
Copy

이 예는 구분 기호가 〈@〉 및 〈.〉일 때 여러 구분 기호를 사용하여 첫 번째, 두 번째, 세 번째 토큰을 반환하는 방법을 보여줍니다.

SELECT STRTOK('user@snowflake.com', '@.', 1);
+---------------------------------------+
| STRTOK('USER@SNOWFLAKE.COM', '@.', 1) |
|---------------------------------------|
| user                                  |
+---------------------------------------+
Copy
SELECT STRTOK('user@snowflake.com', '@.', 2);
+---------------------------------------+
| STRTOK('USER@SNOWFLAKE.COM', '@.', 2) |
|---------------------------------------|
| snowflake                             |
+---------------------------------------+
Copy
SELECT STRTOK('user@snowflake.com', '@.', 3);
+---------------------------------------+
| STRTOK('USER@SNOWFLAKE.COM', '@.', 3) |
|---------------------------------------|
| com                                   |
+---------------------------------------+
Copy

이는 문자열에서 가능한 마지막 토큰을 지나 인덱스를 생성하려고 하면 어떻게 되는지 보여줍니다.

select strtok('user@snowflake.com.', '@.', 4);
+----------------------------------------+
| STRTOK('USER@SNOWFLAKE.COM.', '@.', 4) |
|----------------------------------------|
| NULL                                   |
+----------------------------------------+
Copy

이 예는 입력 문자열이 비어 있으므로 요소가 0개 있기 때문에 요소 #1이 문자열의 끝을 지나므로 함수는 빈 문자열이 아닌 NULL을 반환합니다.

select strtok('', '', 1);
+-------------------+
| STRTOK('', '', 1) |
|-------------------|
| NULL              |
+-------------------+
Copy

다음은 빈 구분 기호 문자열의 예입니다.

select strtok('a.b', '', 1);
+----------------------+
| STRTOK('A.B', '', 1) |
|----------------------|
| a.b                  |
+----------------------+
Copy

다음은 각 매개 변수에 대해 NULL 값이 있는 예입니다.

select strtok(NULL, '.', 1);
+----------------------+
| STRTOK(NULL, '.', 1) |
|----------------------|
| NULL                 |
+----------------------+
Copy
select strtok('a.b', NULL, 1);
+------------------------+
| STRTOK('A.B', NULL, 1) |
|------------------------|
| NULL                   |
+------------------------+
Copy
select strtok('a.b', '.', NULL);
+--------------------------+
| STRTOK('A.B', '.', NULL) |
|--------------------------|
| NULL                     |
+--------------------------+
Copy