답변:
기본적으로 문자열을 정렬하고 비교하는 방법.
예 :
비교 :
정렬 :
특수 문자 상당
일부 SQL (SQL Server 2008+)
DECLARE @foo TABLE (bar varchar(2))
INSERT @foo VALUES ('z'), ('æ'), ('ø'), ('å'), ('ss'), ('ß'), ('a'), ('ä')
SELECT * FROM @foo ORDER BY bar COLLATE Finnish_Swedish_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Norwegian_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Latin1_General_100_CS_AS --german (western europe) and default
SELECT * FROM @foo ORDER BY bar COLLATE German_PhoneBook_100_CS_AS
"콜 레이션"은 etymology.com에서 가장 잘 정의됩니다.
14c 후반, "모이고 비교하는 행위"
지난 600 년 동안 전혀 바뀌지 않았습니다. "콜레이트 (collate)"는 "함께 모으다"를 의미하며, 책의 순서, 시간순 또는 데이터베이스에 관계없이 모두 동일합니다.
컴퓨터 과학에 적용 할 때 우리가하는 일은 스토리지 메커니즘을 주문과 분리하는 것 입니다. ASCII-betical에 대해 들어 보셨을 것입니다 . ASCII 문자의 이진 인코딩을 기반으로 한 비교를 나타냅니다. 해당 시스템에서 스토리지와 데이터 정렬은 동일합니다. ASCII로 표준화 된 "인코딩" 이 "콜 레이션"을 변경 한 경우 (순서)도 변경됩니다.
POSIX는로 시작했습니다 LC_COLLATE
. 그러나 유니 코드로 전환함에 따라 데이터 정렬을 표준화하기위한 컨소시엄 ( ICU) 도 등장했습니다 .
SQL 사양에는 데이터 정렬을 제공하는 두 가지 확장이 있습니다.
F690
:“수집 지원 :
포함 collation name
, collation clause
, collation definition
와 drop collation
.
F692
: 확장 데이터 정렬 지원
스키마의 열에 다른 기본 데이터 정렬을 첨부합니다.
본질적으로 이들은 데이터 정렬 CREATE
및 DROP
데이터 정렬 기능을 제공하고 연산자 및 정렬에 대해 데이터 정렬을 지정하고 열의 기본값을 정의합니다.
SQL이 제공해야하는 것에 대한 자세한 정보는
제한된 예제를 붙여 넣는 대신 PostgreSQL 테스트 스위트가 있습니다. 적어도 첫 번째 링크를 확인하고'Türkiye' COLLATE "tr-x-icu" ILIKE '%KI%' AS "false"
collate.icu.utf8.out
collate.linux.utf8.out
collate.out
아마도 체크 아웃 할 가치가 없지만 POSIX 검사를 지루하게하기 위해 여기에 배치했습니다.