COLLATION_KEY 스칼라 함수

COLLATION_KEY 함수는 지정된 데이터 정렬에서 표현식 인수의 데이터 정렬 키를 나타내는 VARBINARY 문자열을 리턴합니다.

Read syntax diagramSkip visual syntax diagram COLLATION_KEY ( string-expression , collation-name , length )

스키마는 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의 값이 지정되지 않은 경우 결과의 길이는 다음 표에 설명된 바와 같이 판별됩니다.
표 1. 결과 길이 판별
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) 값입니다.

예:

  1. 다음 쿼리는 코드 페이지 923에서 독일어의 언어 인식 데이터 정렬을 사용하여 직원을 성에 따라 순서화합니다.
       SELECT FIRSTNME, LASTNAME
          FROM EMPLOYEE
             ORDER BY COLLATION_KEY (LASTNAME, 'SYSTEM_923_DE')
  2. 다음 쿼리는 문화적으로 올바른 비교를 사용하여 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'