카테고리:

문자열 및 이진 함수 (일치/비교)

SUBSTR , SUBSTRING

base_expr 에 의해 지정된 문자/바이트에서 시작하여 start_expr 에서 문자열 또는 이진 값의 부분을, 선택적으로 제한된 길이로 반환합니다.

이러한 함수는 동의어입니다.

참고 항목:

LEFT , RIGHT

구문

SUBSTR( <base_expr>, <start_expr> [ , <length_expr> ] )

SUBSTRING( <base_expr>, <start_expr> [ , <length_expr> ] )
Copy

인자

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]                     |
----------+--------+-----+----------------------------+
Copy