NORMALIZE_STRING 스칼라 함수
NORMALIZE_STRING 함수는 유니코드 문자열 인수를 받아 비교에 사용할 수 있는 정규화된 문자열을 반환합니다.
NORMALIZE_STRING 함수는 동일하게 보이는 두 개의 문자열을 변환할 수 있습니다(예: Å는 UTF-16 에서 다음과 같이 인코딩될 수 있습니다 X'00C5' 그리고 X' 0041030a ')와 같은 유니코드 코드 포인트로 인코딩되지 않을 수 있지만, 비교할 수 있는 정규화된 형식으로 인코딩됩니다.
스키마는 SYSIBM입니다.
- 유니코드 문자열
- 내장 문자열 또는 그래픽 문자열 데이터 유형의 값을 반환하는 표현으로, 유니코드 UTF-8 또는 유니코드 UTF-16 이고 LOB가 아닙니다. CAST 사양을 사용하여 ASCII 또는 EBCDIC 데이터를 유니코드로 변환한 후 이 기능을 사용할 수 있습니다.
- NFC, NFD, NFKC, 또는 NFKD
- 정규화된 형식을 지정합니다:
- NFC
- 규범적 분해와 규범적 구성
- NFD
- 규범적 분해
- NFKC
- 호환성 분해에 이어 표준 구성
- NFKD
- 호환성 분해
- integer
- 결과적으로 생성되는 가변 길이 문자열의 길이 속성은 문자열인 경우 바이트 단위로, 그래픽 문자열인 경우 더블 바이트 코드 포인트 단위로 표시됩니다. 소스 문자열이 문자열인 경우 값은 1-32704 범위의 정수여야 하고, 소스 문자열이 그래픽인 경우 값은 16352여야 합니다.
이 함수의 결과는 유니코드 문자열의 데이터 유형에 따라 달라지는 길이의 문자열입니다
- VARCHAR if unicode-string 이 CHAR 또는 VARCHAR
- Unicode-string이 GRAPHIC 또는 VARGRAPHIC인 경우 VARGRAPHIC
결과의 CCSID는 unicode-string의 CCSID와 동일합니다.
결과의 길이 속성은 정수값이 지정되었는지에 따라 달라집니다. 정수가 지정되면 결과의 길이 속성은 정수 바이트 또는 더블 바이트 코드 포인트가 됩니다. 정수가 지정되지 않으면, 결과의 길이 속성은 문자열의 경우 MIN(3*n,32704) 이고, 그래픽 문자열의 경우 MIN(3*n,16352) 입니다. 여기서 n 은 소스의 길이 속성입니다.
첫 번째 인수가 null이면 결과는 null 값입니다.
예 1 : 다음 예에서 "abc"는 표준화 양식 NFC로 표준화됩니다
SET :hv1 = NORMALIZE_STRING('ábc',NFC) -- x'0061030100620063'hv1 'abc'로 설정되어 있습니다 -- X'00E100620063'. 정규화 양식 NFC를 사용하면, 문자 'á'를 나타내는 두 코드 포인트 시퀀스 X'00610301'이 다음과 같이 정규화됩니다 X'00E1' 이는 X'00610301'의 사전 작성된 등가물입니다.예 2 : 다음 예에서 "ábc"는 정규화 양식 NFD로 정규화됩니다.
SET :hv1 = NORMALIZE_STRING('ábc',NFD) -- x'00E100620063'hv1 'abc'로 설정되어 있습니다 -- X'0061030100620063 '. 정규화 양식 NFD를 사용하면 코드 포인트 X'00E1' 는 라틴 소문자 A와 결합된 악센트 부호 문자로 구성된 두 개의 코드 포인트 시퀀스 X'00610301' 로 분해됩니다.