MS-SQL / SQL Server

Windows 데이터 정렬 스타일


SQL Server 설치 중에 Windows 데이터 정렬 또는 이진 데이터 정렬 중 하나를 선택하라는 메시지가 표시됩니다. 선택하는 데이터 정렬에 따라 Microsoft SQL Server 인스턴스의 데이터 비교 및 정렬 순서 동작이 달라집니다. 이 항목에서는 SQL Server 구현 시 Microsoft Windows 데이터 정렬 또는 이진 데이터 정렬을 선택할 때 고려해야 할 사항을 다룹니다.

참고:

Windows 데이터 정렬의 경우 ncharnvarchar 및 ntext 유니코드 데이터 형식은 charvarchar 및 text 비유니코드 데이터 형식과 같은 정렬 동작을 합니다.

Windows 데이터 정렬은 관련 Windows 로캘을 기반으로 문자 데이터 저장 규칙을 정의합니다. 기본 Windows 데이터 정렬 규칙은 사전 정렬이 적용될 때 사용되는 알파벳이나 언어를 지정하고 비유니코드 문자 데이터를 저장하는 데 사용되는 코드 페이지도 지정합니다. 이진 데이터 정렬은 로캘 및 데이터 형식으로 정의된 코딩 값 시퀀스에 따라 데이터를 정렬합니다. SQL Server의 이진 데이터 정렬은 사용할 로캘과 ANSI 코드 페이지를 정의하며 이진 정렬 순서를 적용합니다. 이진 데이터 정렬은 비교적 간단하므로 응용 프로그램 성능 향상에 도움이 됩니다. 비유니코드 데이터 형식의 경우 데이터 비교는 ANSI 코드 페이지에 정의된 코드 포인트를 기준으로 수행됩니다. 유니코드 데이터 형식의 경우 데이터 비교는 유니코드 코드 포인트를 기준으로 수행됩니다. 유니코드 데이터 형식에서의 이진 데이터 정렬의 경우 데이터 정렬 시 로캘은 고려되지 않습니다. 예를 들어 Latin_1_General_BIN과 Japanese_BIN은 유니코드 데이터에서 사용할 때 동일한 정렬 결과를 생성합니다.

더 이전의 SQL Server 이진 데이터 정렬은 WCHAR로 첫 번째 문자를 비교한 후 바이트 단위 비교를 수행했으므로 SQL Server의 이전 이진 데이터 정렬은 유니코드 데이터에 대해 불완전한 코드 포인트 간 비교를 수행했습니다. 이전 버전과의 호환성을 위해 기존의 이진 데이터 정렬 의미 체계는 변경되지 않습니다.

이 SQL Server 릴리스의 이진 데이터 정렬에는 순수 코드 포인트 비교 데이터 정렬 집합도 포함되어 있습니다. 이진 데이터 정렬로 마이그레이션하면 진정한 코드 포인트 비교 기능을 활용할 수 있으며, 새 응용 프로그램을 개발할 때는 이진 데이터 정렬을 사용해야 합니다. BIN2 접미사는 코드 포인트 데이터 정렬 의미 체계를 구현하는 데이터 정렬 이름을 식별합니다. 새로운 이진 정렬에서 BIN2에 해당하는 비교 플래그를 사용할 수도 있습니다. 자세한 내용은 BIN 및 BIN2 데이터 정렬 사용 지침을 참조하십시오.

다음 표에서는 SQL Server에 대한 Windows 데이터 정렬 순서 옵션에 대해 설명합니다.

정렬 순서(접미사)정렬 순서 설명

이진(_BIN)1

각 문자에 대해 정의된 비트 패턴을 사용하여 SQL Server 테이블의 데이터를 정렬하고 비교합니다. 이진 정렬 순서는 대/소문자와 악센트를 구분합니다. 이진 정렬은 가장 빠른 정렬 순서입니다. 자세한 내용은 BIN 및 BIN2 데이터 정렬 사용 지침을 참조하십시오.

이 옵션을 선택하지 않으면 SQL Server는 관련된 언어 또는 알파벳에 대해 사전에 정의된 정렬 및 비교 규칙을 따릅니다.

이진 코드 포인트(_BIN2)1

유니코드 데이터에 대한 유니코드 코드 포인트를 사용하여 SQL Server 테이블의 데이터를 정렬하고 비교합니다. 비유니코드 데이터의 경우 이진 코드 포인트에서는 이진 정렬과 동일한 비교를 사용합니다.

이진 코드 포인트 정렬 순서 사용 시의 이점은 정렬된 SQL Server 데이터를 비교하는 응용 프로그램에서 데이터를 재정렬할 필요가 없다는 점입니다. 결과적으로 이진 코드 포인트 정렬 순서를 사용하면 응용 프로그램을 더 간단하게 개발할 수 있으며 성능이 향상될 수 있습니다. 자세한 내용은 BIN 및 BIN2 데이터 정렬 사용 지침을 참조하십시오.

대/소문자 구분(_CS)

대/소문자를 구분합니다. 이 정렬 순서를 선택하면 소문자가 대문자보다 먼저 정렬됩니다.

이 옵션을 선택하지 않으면 SQL Server는 정렬할 때 대문자와 소문자가 동일한 것으로 간주합니다.

악센트 구분(_AS)

악센트가 있는 문자와 악센트가 없는 문자를 구분합니다. 예를 들어 'a'는 'ấ'와 같지 않습니다.

이 옵션을 선택하지 않으면 SQL Server는 정렬할 때 악센트가 있는 문자와 악센트가 없는 문자가 동일한 것으로 간주합니다.

가나 구분(_KS)

일본어 가나 문자의 두 가지 유형인 히라가나와 가타가나를 구분하도록 지정합니다.

이 옵션을 선택하지 않으면 SQL Server는 정렬할 때 히라가나와 가타가나가 동일한 것으로 간주합니다.

전자/반자 구분(_WS)

같은 문자라도 싱글바이트 문자와 더블바이트 문자를 구분합니다.

이 옵션을 선택하지 않으면 SQL Server는 정렬할 때 싱글바이트와 더블바이트로 표시된 같은 문자를 동일한 것으로 간주합니다.

1 이 옵션을 선택하면 대/소문자 구분, 악센트 구분, 일본어 가나 구분 및 전자/반자 구분 옵션을 사용할 수 없습니다.

각 Windows 데이터 정렬은 일련의 접미사를 조합하여 대/소문자, 악센트, 일본어 가나, 전자/반자 구분 여부를 정의합니다. 다음 예에서는 다양한 접미사 조합에 대한 정렬 순서 동작에 대해 설명합니다.

Windows 데이터 정렬 접미사정렬 순서 설명

_BIN1

이진 정렬

_BIN21

이진 코드 포인트 정렬 순서

_CI_AI

대/소문자 구분 안 함, 악센트 구분 안 함, 일본어 가나 구분 안 함, 전자/반자 구분 안 함

_CI_AI_KS

대/소문자 구분 안 함, 악센트 구분 안 함, 일본어 가나 구분, 전자/반자 구분 안 함

_CI_AI_KS_WS

대/소문자 구분 안 함, 악센트 구분 안 함, 일본어 가나 구분, 전자/반자 구분

_CI_AI_WS

대/소문자 구분 안 함, 악센트 구분 안 함, 일본어 가나 구분 안 함, 전자/반자 구분

_CI_AS

대/소문자 구분 안 함, 악센트 구분, 일본어 가나 구분 안 함, 전자/반자 구분 안 함

_CI_AS_KS

대/소문자 구분 안 함, 악센트 구분, 일본어 가나 구분, 전자/반자 구분 안 함

_CI_AS_KS_WS

대/소문자 구분 안 함, 악센트 구분, 일본어 가나 구분, 전자/반자 구분

_CI_AS_WS

대/소문자 구분 안 함, 악센트 구분, 일본어 가나 구분 안 함, 전자/반자 구분

_CS_AI

대/소문자 구분, 악센트 구분 안 함, 일본어 가나 구분 안 함, 전자/반자 구분 안 함

_CS_AI_KS

대/소문자 구분, 악센트 구분 안 함, 일본어 가나 구분, 전자/반자 구분 안 함

_CS_AI_KS_WS

대/소문자 구분, 악센트 구분 안 함, 일본어 가나 구분, 전자/반자 구분

_CS_AI_WS

대/소문자 구분, 악센트 구분 안 함, 일본어 가나 구분 안 함, 전자/반자 구분

_CS_AS

대/소문자 구분, 악센트 구분, 일본어 가나 구분 안 함, 전자/반자 구분 안 함

_CS_AS_KS

대/소문자 구분, 악센트 구분, 일본어 가나 구분, 전자/반자 구분 안 함

_CS_AS_KS_WS

대/소문자 구분, 악센트 구분, 일본어 가나 구분, 전자/반자 구분

_CS_AS_WS

대/소문자 구분, 악센트 구분, 일본어 가나 구분 안 함, 전자/반자 구분

1 BIN 또는 이진 코드 포인트를 선택하면 대/소문자 구분, 악센트 구분, 일본어 가나 구분 및 전자/반자 구분 옵션을 사용할 수 없습니다.


+ Recent posts