COLLATION_KEY 스칼라 함수
COLLATION_KEY 함수는 지정된 데이터 정렬에서 표현식 인수의 데이터 정렬 키를 나타내는 VARBINARY 문자열을 리턴합니다.
스키마는 SYSIBM입니다.
두 문자열에 대한 COLLATION_KEY의 결과는 지정된 collation-name에서 해당 순서를 판별하기 위해 비교되는 2진수가 될 수 있습니다. 비교를 적용하려면 사용되는 결과는 동일한 collation-name의 결과여야 합니다.
- 문자열 표현식
- 데이터 정렬 키가 판별되는 표현식입니다. 표현식은 내장 문자열, 그래픽 문자열, 숫자 또는 날짜 및 시간 데이터 유형인 값을 리턴해야 합니다. 숫자와 날짜 및 시간 데이터 유형은 내재된 캐스팅을 통해 지원됩니다. 표현식은 FOR BIT DATA 부속 유형이 아니어야 합니다(SQLSTATE 429BM). 표현식이 CLOB, 숫자 또는 날짜 및 시간 데이터 유형인 경우 함수가 평가되기 전에 표현식이 VARCHAR로 캐스트됩니다. 표현식이 DBCLOB인 경우 함수가 평가되기 전에 VARGRAPHIC로 캐스트됩니다. string-expression이 UTF-16 형식이 아닌 경우 이 함수는 string-expression의 코드 페이지를 UTF-16으로 변환합니다. 코드 페이지 변환의 결과에 최소한 하나의 대체 문자가 포함된 경우 이 함수는 하나 또는 여러 개의 대체 문자를 사용하여 UTF-16 문자열의 데이터 정렬 키를 리턴합니다. 이러한 경우 SQLCA의 경고 플래그 SQLWARN8이 'W'로 설정됩니다.
- collation-name
- 데이터 정렬 키를 판별할 때 사용할 데이터 정렬을 지정하는 표현식입니다. 표현식은 CHAR 또는 VARCHAR인 값을 리턴해야 합니다. 유니코드 데이터베이스에서 표현식은 GRAPHIC 또는 VARGRAPHIC이 될 수도 있습니다. 표현식은 상수여야 합니다(SQLSTATE 428I9). collation-name의 값은 대소문자를 구분하지 않으며 유니코드 데이터 정렬 알고리즘 기반 데이터 정렬 또는 유니코드 데이터의 언어 인식 데이터 정렬 중 하나여야 합니다(SQLSTATE 42704).
- length
- 결과의 길이 속성을 바이트 단위로 지정하는 표현식입니다. 표현식은 내장 숫자 데이터 유형, CHAR 또는 VARCHAR 데이터 유형인 값을 리턴해야 합니다. 유니코드 데이터베이스에서 표현식은 GRAPHIC 또는 VARGRAPHIC 데이터 유형이 될 수도 있습니다. CHAR, VARCHAR, GRAPHIC 및 VARGRAPHIC은 내재된 캐스팅을 통해 지원됩니다. 표현식이 INTEGER가 아닌 경우 함수가 평가되기 전에 INTEGER로 캐스트됩니다. 값은 1 - 32 672여야 합니다(SQLSTATE 42815). 표현식은 상수여야 합니다(SQLSTATE 428I9).
length의 값이 지정되지 않은 경우 결과의 길이는
다음 표에 설명된 바와 같이 판별됩니다.
| string-expression의 데이터 유형 | 결과 데이터 유형 길이 |
|---|---|
| CHAR(n) 또는 VARCHAR(n) | 최소 12n바이트 및 32 672바이트 |
| GRAPHIC(n) 또는 VARGRAPHIC(n) | 최소 12n바이트 및 32 672바이트 |
length가 지정되는지 여부에 관계없이 데이터 정렬 키의 길이가 결과 데이터 유형의 길이보다 긴 경우 오류가 리턴됩니다(SQLSTATE 42815). 데이터 정렬 키의 실제 결과 길이는 UTF-16으로 변환된 후에 대략 string-expression의 길이의 6배입니다.
string-expression이 비어 있는 문자열이면 결과는 0이 아닌 길이가 있는 유효한 데이터 정렬 키입니다.
인수가 널(NULL)일 수 있는 경우, 결과는 널(NULL)일 수 있습니다. 인수가 널(NULL)인 경우, 결과는 널(NULL) 값입니다.
예:
- 다음 쿼리는 코드 페이지 923에서 독일어의 언어 인식 데이터 정렬을 사용하여
직원을 성에 따라
순서화합니다.
SELECT FIRSTNME, LASTNAME FROM EMPLOYEE ORDER BY COLLATION_KEY (LASTNAME, 'SYSTEM_923_DE') - 다음 쿼리는 문화적으로 올바른 비교를 사용하여 Québec 주에서
직원의 부서를
찾습니다.
SELECT E.WORKDEPT FROM EMPLOYEE AS E INNER JOIN SALES AS S ON COLLATION_KEY(E.LASTNAME, 'CLDR181_LFR') = COLLATION_KEY(S.SALES_PERSON, 'CLDR181_LFR') WHERE S.REGION = 'Quebec'
