COLLATE
COLLATE
COLLATE 함수는 지정된 정렬 규칙(collation specification) 속성을 적용한 원본 문자열의 복사본을 반환해요.
출처: COLLATE
본문
COLLATE 함수는 원본 문자열의 복사본을 반환하되, 원래의 정렬 규칙 속성 대신 지정된 collation_specification 속성을 적용해요. 이 복사본은 이후 문자열 비교에 사용할 수 있으며, 이때 새 정렬 규칙이 사용돼요.
구문 (Syntax)
COLLATE 함수는 일반 함수로 호출할 수 있어요:
COLLATE(<string_expression>, '<collation_specification>')
COLLATE 함수는 중위(infix) 연산자처럼 사용할 수도 있어요:
<string_expression> COLLATE '<collation_specification>'
인자 (Arguments)
- string_expression — 복사할 문자열이에요.
- collation_specification — 문자열 복사본에 저장할 정렬 규칙이에요. 정렬 규칙 지정자에 대한 자세한 내용은 Collation specifications를 참조해요.
반환 (Returns)
원본 문자열의 복사본을 반환하되, 원래의 collation_specification 대신 지정된 collation_specification 속성을 적용해요.
사용 메모 (Usage notes)
- 각
VARCHAR는 해당VARCHAR를 다른VARCHAR와 비교할 때 사용할 정렬 규칙 지정자를 보관하는 속성을 포함해요.COLLATE함수는 문자열을 복사하되, 원래 지정자가 아닌 새 정렬 규칙 지정자를 복사본에 적용해요. 문자열 자체는 변경되지 않으며, 문자열과 연결된 정렬 규칙 지정자만 변경돼요. COLLATE를 중위 연산자로 사용할 때collation_specification은 일반 표현식이 아닌 상수 문자열이어야 해요.
예제 (Examples)
다음 예제는 COLLATE 함수를 호출하면 다른 정렬 규칙 지정을 가진 문자열의 복사본이 반환된다는 것을 보여줘요.
참고:
COLLATE함수를 사용하는 더 많은 예제는 Collation examples를 참조해요.
테이블을 생성하고 행을 삽입해요. 삽입된 행의 값의 정렬 규칙 지정은 es(스페인어)예요:
CREATE OR REPLACE TABLE collation1 (v VARCHAR COLLATE 'es');
INSERT INTO collation1 (v) VALUES ('ñ');
이 예제는 COLLATE 함수가 문자열을 변경하지 않는다는 것을 보여줘요. 세 번째 열의 복사된 문자열은 첫 번째 열의 원본 문자열과 동일한 소문자예요. 그러나 COLLATE가 반환하는 값의 정렬 규칙 지정은 es에서 es-ci로 변경됐어요:
SELECT v,
COLLATION(v),
COLLATE(v, 'es-ci'),
COLLATION(COLLATE(v, 'es-ci'))
FROM collation1;
+---+--------------+---------------------+--------------------------------+
| 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;
+---+--------------------------+--------------------------+---------------------+---------------------------+
| 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');
다음 두 쿼리는 동일한 결과를 반환해요. 첫 번째는 COLLATE를 함수로 사용하고, 두 번째는 COLLATE를 중위 연산자로 사용해요:
SELECT spanish_phrase FROM collation_demo
ORDER BY COLLATE(spanish_phrase, 'utf8');
SELECT spanish_phrase FROM collation_demo
ORDER BY spanish_phrase COLLATE 'utf8';
더 알아보기 (Learn more)
- COLLATION
- 문자열 및 이진 함수 (String & binary functions)
- Collation specifications
- Collation examples