- 카테고리:
문자열 및 이진 함수 (일치/비교)
SUBSTR , SUBSTRING¶
base_expr
에 의해 지정된 문자/바이트에서 시작하여 start_expr
에서 문자열 또는 이진 값의 부분을, 선택적으로 제한된 길이로 반환합니다.
이러한 함수는 동의어입니다.
구문¶
SUBSTR( <base_expr>, <start_expr> [ , <length_expr> ] )
SUBSTRING( <base_expr>, <start_expr> [ , <length_expr> ] )
인자¶
base_expr
이는
VARCHAR
또는BINARY
값이어야 합니다.start_expr
시작 위치는 정수로 평가되는 식이어야 합니다. 하위 문자열이 시작되는 오프셋을 지정합니다. 오프셋은 다음으로 측정됩니다.
입력이
VARCHAR
인 경우 UTF-8 문자 수.입력이
BINARY
인 경우 바이트 수.
시작 위치는 0이 아니라 1부터 시작합니다.
SUBSTR('abc', 1, 1)
은 ‘b’가 아닌 ‘a’를 반환합니다.length_expr
길이는 정수로 평가되는 식이어야 합니다. 다음을 지정해야 합니다.
입력이
VARCHAR
인 경우 반환할 UTF-8 문자 수입니다.입력이
BINARY
인 경우 반환할 바이트 수입니다.
길이는 0보다 크거나 같아야 합니다. 길이가 음수이면 함수는 빈 문자열을 반환합니다.
반환¶
반환된 값의 데이터 타입은 base_expr
(BINARY
또는 VARCHAR
)의 데이터 타입과 동일합니다.
사용법 노트¶
length_expr
이 사용되는 경우,length_expr
문자/바이트까지 반환되고, 그렇지 않으면 문자열 또는 이진 값의 끝까지의 모든 문자가 반환됩니다.start_expr
의 값은 1부터 시작합니다.0을 지정하면 1로 처리됩니다.
음수 값이 지정되는 경우, 시작 위치는 문자열 또는 이진 값의 끝에서
start_expr
문자/바이트로 계산됩니다. 위치가 문자열 또는 이진 값의 범위를 벗어나는 경우, 빈 값이 반환됩니다.
입력 중 하나라도 NULL인 경우, NULL이 반환됩니다.
데이터 정렬 세부 정보¶
데이터 정렬은
VARCHAR
입력에 적용됩니다. 첫 번째 매개 변수의 입력 데이터 타입이BINARY
인 경우 데이터 정렬이 적용되지 않습니다.No impact. 데이터 정렬이 구문적으로 허용되지만, 데이터 정렬은 처리에 영향을 주지 않습니다. 예를 들어, 2자 및 3자 문자가 있는 언어(예: 헝가리어의 “dzs”, 체코어의 “ch”)는 여전히 길이 인자에 대해 두 개 또는 세 개의 문자(한 문자가 아님)로 계산합니다.
The collation of the result is the same as the collation of the input. 이는 반환된 값이 중첩 함수 호출의 일부로서 다른 함수에 전달되는 경우에 유용할 수 있습니다.
예¶
SELECT SUBSTR('testing 1 2 3', 9, 5) FROM x;
-------------------------------+
substr('testing 1 2 3', 9, 5) |
-------------------------------+
1 2 3 |
-------------------------------+
SELECT '123456', pos, len, SUBSTR('123456', pos, len) FROM o;
----------+--------+-----+----------------------------+
'123456' | pos | len | substr('123456', pos, len) |
----------+--------+-----+----------------------------+
123456 | -1 | 3 | 6 |
123456 | -3 | 3 | 456 |
123456 | -3 | 7 | 456 |
123456 | -5 | 3 | 234 |
123456 | -7 | 3 | |
123456 | 0 | 3 | 123 |
123456 | 0 | 7 | 123456 |
123456 | 1 | 3 | 123 |
123456 | 3 | 3 | 345 |
123456 | 3 | 7 | 3456 |
123456 | 5 | 3 | 56 |
123456 | 5 | 7 | 56 |
123456 | 7 | 3 | |
123456 | [NULL] | 3 | [NULL] |
123456 | [NULL] | 7 | [NULL] |
----------+--------+-----+----------------------------+