콜 레이션이란 무엇입니까?


138

데이터 정렬은 SQL에서 무엇을 의미하며 그 의미는 무엇입니까?


2
@gbn : 우연히도 데이터 정렬은 MSSQL과 MySQL 모두에서 매우 유사한 방식으로 작동합니다.
Piskvor는 건물을 떠났습니다


@Piskvor : 일부 mySql 데이터 정렬 옵션 (예 : UTF8)을 MSSQL에서 사용할 수없는 경우 : msdn.microsoft.com/en-us/library/ms144250.aspx
CB

@CB : 거부하지 않습니다. 유사성은 지원되지 않는 문자 집합보다 더 깊습니다.
Piskvor

답변:


60

데이터 정렬은 단순히 정렬 순서로 생각할 수 있습니다.

영어에서 (그리고 이상한 사촌 인 American), 데이터 정렬은 ASCII 코드로 정렬 된 매우 간단한 문제 일 수 있습니다.

악센트와 다른 기능을 가진 이상한 유럽 언어를 배우면 데이터 정렬이 변경됩니다. 예를 들어, 서로 다른 악센트 형식이 a다른 코드 포인트에 존재할 수 있지만 모두 같은 문자 인 것처럼 정렬해야 할 수도 있습니다.


4
다른 악센트는 일반적으로 그들이 것처럼 정렬 할 필요가 있다는 것을 의미 다른 문자 - 예를 들어 e, ë, é, ě, 및 è 수도 주문의 목적을 위해 별개의 글자 수 (하지만 아마도 같은 문자를 검색 할 때, 그 미친 유럽인 젠장)).
Piskvor

1
@Piskvor : 귀하의 정보의 좌표와 알파벳을 사용하여 특정 국가를 가리키는되지 않은 42문자 15들을 분음 부호있는의?
Quassnoi

4
@Quassnoi : 네, 그리고? 내가 미쳤다는 것을 암시합니까? ; o) (유니 코드에 대해 하나님 께 감사하지만, 여전히 국가 별 문자셋으로 작업해야한다면
엄청나게 열중 할 것입니다

3
@Piskvor : 미안, 미안, 당신은 완벽하게 미쳤다! :)
Quassnoi

정렬 전용 where st= 'aaa'입니까?
Royi Namir

42

일부 서유럽 언어의 "악센트 문자는 악센트가없는 문자와 다르게 정렬됩니다"외에도, 때때로 다르게 정렬되는 문자 그룹도 고려해야합니다 .

전통적으로 스페인어에서 "ch"는 "ll"(둘 다 단일 음소를 나타냄)과 동일하게 자체 문자로 간주되므로 목록은 다음과 같이 정렬됩니다.

  • 카발로
  • 친코
  • 코체
  • 초콜릿
  • 추 에코
  • 징두리 판벽
  • (...)
  • 람 파라
  • 루 에고
  • 란타
  • 루비아
  • 마데 라

단일로 시작하는주의 모든 단어 C는 로 시작하는 단어를 제외하고, 함께 이동 채널 이동 와 같은 그들, LL는 단일로 시작하는 모든 단어 후 이동 단어 -starting 리터를 . 이것은 오래된 사전과 백과 사전에서 볼 수있는 순서이며 때로는 오늘날 매우 보수적 인 조직에서도 볼 수 있습니다.

Royal Academy of the Language는 컴퓨팅 세계에서 스페인어를 쉽게 수용 할 수 있도록 이것을 변경했습니다. 그럼에도 불구하고, ñ 는 여전히 n 과 다른 문자로 간주되어 그 뒤를 따르고 o 앞에옵니다 . 따라서 이것은 올바르게 정렬 된 목록입니다.

  • 나미비아
  • 누 메로
  • 얀두
  • 오브 라
  • 오조

올바른 데이터 정렬을 선택하면이 모든 작업이 자동으로 수행됩니다. :-)


데이터 정렬은 올바른 정렬에 매우 유용하지만 비교에는 여전히 유용합니까? 예를 들어, 실제적인 이유로 'ñandú'와 'nandu'를 같게 만들고 싶습니다 ... 데이터 정렬 메커니즘이이 작업에 도움이 될 수 있습니까?
CB

@CB : 열의 값이 'Aéreo'와 같은 모든 행을 선택하는 것과 같은 것을 의미하고 SQL S.는 'aereo', 'aereó', 'AerEO'와 같은 행을 반환합니다. 쿼리가 그렇게 할 수 있습니다. 그러나이 데이터 정렬이 데이터베이스의 기본 데이터 정렬과 매우 다른 경우 성능 문제가 발생합니다. 임시 테이블을 사용하는 경우 tempdb의 데이터 정렬도 추적해야합니다. 그러나 할 수는 있습니다.
Joe Pineda

이 경우 좀 더 설명해 주시겠습니까? 특히, "nandu"와 같은 단어 인 "SELECT where FROM test WHERE word"에서 간단한 쿼리를 수행 할 수 있습니까? 그리고 어떤 데이터 정렬을 사용해야 작동합니까? (나는 악센트뿐만 아니라 분음 부호에 관심이 있습니다 ...)
CB

2
@CB는 데이터 정렬의 'AI'또는 'AS'부분 (Accent Insensitive and Accent Sensitive)을 살펴 봅니다.
더스틴 켄달

14

문자열을 비교하고 정렬하는 방법을 알려주는 규칙 : 글자 순서; 사건이 중요한지, 분음 부호가 중요한지 등

예를 들어, 모든 문자를 다르게하려면 (예 :에 파일 이름을 저장하는 경우 UNIX) UTF8_BIN데이터 정렬 을 사용합니다 .

SELECT  'A' COLLATE UTF8_BIN = 'a' COLLATE UTF8_BIN

---
0

대소 문자와 분음 부호 차이 (예 : 검색 엔진)를 무시하려면 UTF8_GENERAL_CI데이터 정렬 을 사용합니다 .

SELECT  'A' COLLATE UTF8_GENERAL_CI = 'ä' COLLATE UTF8_GENERAL_CI

---
1

당신이 볼 수 있듯이,이 조합 (비교 규칙) 자본 고려 A하고 lowecase ä같은 문자 무시 케이스와 발음 구별 차이를.


10

데이터 정렬은 문자열 값을 정렬하고 비교하는 방법을 정의합니다

예를 들어, 처리 방법을 정의합니다

  • 악센트 ( äàa등)
  • 사례 ( Aa)
  • 언어 문맥 :
    • 프랑스어 데이터 정렬에서 cote < côte < coté < côté.
    • SQL Server Latin1 기본값에서 cote < coté < côte < côté
  • ASCII 정렬 (이진 데이터 정렬)

5

데이터 정렬은 ASCII 또는 유니 코드 등의 알파벳 문자에 순서를 할당하는 것을 의미합니다.

알파벳에 {A, B, C} 문자가 3 개 있다고 가정합니다. 문자에 정수 값을 할당하여 예시 데이터 정렬을 정의 할 수 있습니다.

  1. 예 1 = {A = 1, B = 2, C = 3}
  2. 예 2 = {C = 1, B = 2, A = 3}
  3. 예 3 = {B = 1, C = 2, A = 3}

사실, n을 정의 할 수 있습니다! 크기 n의 알파벳에 대한 데이터 정렬. 그러한 순서가 주어지면 LSD / MSD 문자열 정렬과 같은 다른 정렬 루틴이 문자열 정렬에 사용합니다.


3

데이터 정렬은 데이터 정렬 및 비교 방법을 결정합니다. internazionalization과 관련하여 매우 자주 중요합니다. 예를 들어 일본어 한자를 어떻게 정렬합니까?

Google 데이터 정렬 및 SQL Server를 사용하면 이에 대해 많은 기사를 찾을 수 있습니다!


3

참고이 문서에서 가져온 것입니다 : 데이터 정렬은 문자 세트의 문자를 비교하기위한 규칙의 집합입니다. 또한 문자 정렬에 대한 규칙이 있으며 두 문자의 올바른 순서는 언어마다 다릅니다. 데이터 정렬은 단어가 다른 문자열보다 큰 경우와 같이 두 문자열을 비교 한 후 정렬합니다.

"latin1"문자 집합을 사용하는 경우 "latin1_swedish_ci"데이터 정렬을 사용할 수 있습니다.

잘못된 데이터 정렬은 데이터베이스 성능에 영향을 줄 수 있으므로 올바른 데이터 정렬을 선택해야합니다.


2

http://en.wikipedia.org/wiki/Collation

데이터 정렬은 서면 정보를 표준 순서로 모은 것입니다. (...) 유니 코드 데이터 정렬 알고리즘과 같은 데이터 정렬 알고리즘 은 주어진 두 문자열을 비교하고 다른 문자열보다 먼저 오는 문자열을 결정하는 과정을 통해 순서를 정의합니다.



1
이 기사는 실제로 모든 것을 설명합니다.
Joe Pineda

3
@Joe Pineda. 어쩌면 그것은 실제로 모든 것을 설명하지만 독자는 그것을 모두 알고 싶어합니까? 또는 독자가 단순히 가장 기본적이고 일반적으로 사용되는 데이터 정렬의 요소와 기능을 다루는 간결하고 신뢰할 수있는 답변을 원할 수 있기 때문에 빠르게 읽고 읽고 과제, 과제 또는 프로젝트가 문제를 일으킨 모든 작업을 다시 시작할 수 있습니다. 로 시작?
cfwschmidt

2
나는이의 아이러니 감사 @TJCrowder

1

데이터 정렬은 SQL Server가 텍스트 정렬 및 비교 방법을 결정하는 방법입니다.

MSDN을 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.