카테고리:

문자열 및 이진 함수

COLLATE

원래 collation_specification 속성 대신 지정된 collation_specification 속성을 사용하여 원래 문자열의 복사본을 반환합니다.

이 복사본은 새 collation_specification 을 사용하는 후속 문자열 비교에 사용할 수 있습니다.

구문

COLLATE 함수는 일반 함수로서 호출할 수 있습니다.

COLLATE(<string_expression>, '<collation_specification>')
Copy

COLLATE 함수는 중위 연산자인 것처럼 사용할 수 있습니다.

<string_expression> COLLATE '<collation_specification>'
Copy

인자

string_expression

복사할 문자열입니다.

collation_specification

문자열의 복사본과 함께 저장할 데이터 정렬입니다. 데이터 정렬 지정자에 대한 자세한 내용은 데이터 정렬 사양 을 참조하십시오.

반환

원래 collation_specification 대신 지정된 collation_specification 속성을 사용하여 원래 문자열의 복사본을 반환합니다.

사용법 노트

  • 각 VARCHAR 에는 해당 VARCHAR 를 다른 VARCHAR 와 비교할 때 사용할 데이터 정렬 지정자를 보유하는 속성이 포함되어 있습니다. COLLATE 함수는 문자열을 복사하지만, 원래 사양이 아닌 새 데이터 정렬 사양을 복사본에 적용합니다.

    문자열 자체는 변경되지 않습니다. 문자열과 연결된 데이터 정렬 지정자만 변경됩니다.

  • COLLATE가 중위 연산자로 사용되는 경우, collation_specification 은 일반 식이 아닌 상수 문자열이어야 합니다.

다음 예는 COLLATE 함수를 호출하는 경우, 다른 데이터 정렬 사양을 가진 문자열 복사본이 반환됨을 보여줍니다.

참고

COLLATE 함수를 사용하는 더 많은 예제를 보려면 데이터 정렬 예제 섹션을 참조하세요.

테이블을 만들고 행을 삽입합니다. 삽입된 행에 있는 값의 데이터 정렬 사양은 es (스페인어)입니다.

CREATE OR REPLACE TABLE collation1 (v VARCHAR COLLATE 'es');
INSERT INTO collation1 (v) VALUES ('ñ');
Copy

이 예는 COLLATE 함수가 문자열을 변경하지 않는다는 것을 보여줍니다. 첫 번째 열의 원래 문자열과 똑같이 세 번째 열의 복사된 문자열은 소문자입니다. 그러나 COLLATE에서 반환된 값의 데이터 정렬 사양이 es 에서 es-ci 로 변경되었습니다.

SELECT v,
       COLLATION(v),
       COLLATE(v, 'es-ci'),
       COLLATION(COLLATE(v, 'es-ci'))
  FROM collation1;
Copy
+---+--------------+---------------------+--------------------------------+
| V | COLLATION(V) | COLLATE(V, 'ES-CI') | COLLATION(COLLATE(V, 'ES-CI')) |
|---+--------------+---------------------+--------------------------------|
| ñ | es           | ñ                   | es-ci                          |
+---+--------------+---------------------+--------------------------------+

이 예는 COLLATE 에서 반환된 값이 여전히 소문자 문자열이지만, 해당 문자열을 다른 문자열과 비교할 때 ci 데이터 정렬 지정자가 사용됨을 보여줍니다.

SELECT v,
       v = 'ñ' AS "COMPARISON TO LOWER CASE",
       v = 'Ñ' AS "COMPARISON TO UPPER CASE",
       COLLATE(v, 'es-ci'),
       COLLATE(v, 'es-ci') = 'Ñ'
  FROM collation1;
Copy
+---+--------------------------+--------------------------+---------------------+---------------------------+
| V | COMPARISON TO LOWER CASE | COMPARISON TO UPPER CASE | COLLATE(V, 'ES-CI') | COLLATE(V, 'ES-CI') = 'Ñ' |
|---+--------------------------+--------------------------+---------------------+---------------------------|
| ñ | True                     | False                    | ñ                   | True                      |
+---+--------------------------+--------------------------+---------------------+---------------------------+

이 예에서는 독일어 데이터 정렬을 사용하여 결과를 정렬합니다.

SELECT *
  FROM t1
  ORDER BY COLLATE(col1 , 'de');
Copy

다음 두 쿼리는 동일한 결과를 반환합니다. 첫 번째는 COLLATE를 함수로 사용하고, 두 번째는 COLLATE를 중위 연산자로 사용합니다.

SELECT spanish_phrase FROM collation_demo 
  ORDER BY COLLATE(spanish_phrase, 'utf8');
Copy
SELECT spanish_phrase FROM collation_demo 
  ORDER BY spanish_phrase COLLATE 'utf8';
Copy