본문으로 건너뛰기
최종 수정: 에

문자열 함수 개요

문자열 함수는 문자열 데이터를 처리하고 조작하는 데 사용하는 내장 함수입니다. 연결, 분할, 치환, 검색 등 다양한 문자열 연산을 수행하는 데 도움이 됩니다.

UTF-8 인코딩 지원​

UTF-8 인코딩은 키릴 문자, 그리스 문자, 한자, 이모지 등 전 세계 거의 모든 문자를 표현할 수 있는 가변 길이 문자 인코딩입니다.

Doris의 문자열 함수는 별도로 명시된 경우를 제외하고 UTF-8 인코딩을 지원합니다.

예를 들어, substring 함수는 UTF-8로 인코딩된 문자열을 올바르게 처리할 수 있습니다.

ASCII 문자​

mysql> SELECT substring('abc1', 2);
+----------------------+
| substring('abc1', 2) |
+----------------------+
| bc1 |
+----------------------+

그리스 문자​

mysql> SELECT substring('αλφαβητον', 2, 4);
+---------------------------------------+
| substring('αλφαβητον', 2, 4) |
+---------------------------------------+
| λφαβ |
+---------------------------------------+
1 row in set (0.01 sec)

한자​

mysql> SELECT substring('你好,世界', 2, 2);
+------------------------------------+
| substring('你好,世界', 2, 2) |
+------------------------------------+
| 好, |
+------------------------------------+

이모지​

mysql> SELECT substring('😊😊a😊 World!', 2, 3);
+-----------------------------------------+
| substring('😊😊a😊 World!', 2, 3) |
+-----------------------------------------+
| 😊a😊 |
+-----------------------------------------+

성능 고려 사항​

UTF-8로 인코딩된 문자는 길이가 가변적이므로 성능에 영향을 줄 수 있습니다. 일부 함수는 선택해서 사용할 수 있도록 ASCII 버전과 UTF-8 버전을 모두 제공합니다.

예를 들어:

  • length 함수는 문자열의 바이트 길이를 반환합니다
  • char_length 함수는 문자열의 문자 수를 반환합니다
mysql> select length('你好');
+------------------+
| length('你好') |
+------------------+
| 6 |
+------------------+

mysql> select length('αλφαβητον');
+------------------------------+
| length('αλφαβητον') |
+------------------------------+
| 18 |
+------------------------------+

mysql> select char_length('你好');
+-----------------------+
| char_length('你好') |
+-----------------------+
| 2 |
+-----------------------+

mysql> select char_length('αλφαβητον');
+-----------------------------------+
| char_length('αλφαβητον') |
+-----------------------------------+
| 9 |
+-----------------------------------+

유의 사항​

UTF-8 인코딩을 지원하지 않는 일부 문자열 함수는 해당 문서에 명시되어 있습니다. 예를 들어, NGRAM_SEARCH 함수는 ASCII로 인코딩된 문자열만 지원합니다.

mysql> select ngram_search('abcab' , 'ab' , 2);
+----------------------------------+
| ngram_search('abcab' , 'ab' , 2) |
+----------------------------------+
| 0.5 |
+----------------------------------+

ASCII가 아닌 문자가 포함되어 있어도 NGRAM_SEARCH는 실행되지만, 결과가 예상과 다를 수 있습니다.

mysql> select ngram_search('αβγαβ' , 'αβ' , 2);
+-----------------------------------------+
| ngram_search('αβγαβ' , 'αβ' , 2) |
+-----------------------------------------+
| 0.6666666666666666 |
+-----------------------------------------+