하나의 솔루션 wo 아르메니아어 정렬로 값을 변환하여 각 텍스트 컬럼에 대한 계산 열을 만들 수 있고 그렇게처럼 소문자로 설정 ULD :이 작업을 수행하면, 당신이 그 (것)들을 위해 이러한 열 및 쿼리에 인덱스를 넣을 수 있습니다
Alter Table TableName
Add TextValueArmenian As (LOWER(TextColumn COLLATE Latin1_General_CI_AS)) PERSISTED
.
차의 맛이 아니라면 또 다른 해결책은 SCHEMABINDING
과 함께 다양한 열을 소문자 및 올바른 정렬로 캐스팅 한 다음 그 위에 인덱스를 넣는 뷰를 만드는 인덱싱 된 뷰가 될 것입니다 전망.
EDIT 예에서 대소 문자를 구분하지 않고 악센트를 구분합니다. 아마도 주문 문제에 대한 간단한 해결책은 가능한 경우 Latin1_General_CS_AS 또는 Cyrillic_General_100_CS_AS를 사용하는 것입니다.
편집
휴. 꽤 많은 연구 끝에 불행하게도 당신이 원하지 않는 대답을 가지고 있다고 생각합니다. 먼저 StackOverflow는 UTF-8을 사용하여 인코딩되고 Armenian은 UTF-8에 맞춰지기 때문에 코드 또는 Notepad ++와 같은 것으로 제공 한 텍스트를 복사 할 수 있습니다. 둘째, SQL Server에 UTF-8을 저장하는 방법을 알려줍니다. 아쉽게도 SQL Server 2008 (또는 이전 버전)은 UTF-8을 기본적으로 지원하지 않습니다. UTF-8로 데이터를 저장하기 위해, 당신은 선택의 소수가 : 바이너리에
- 스토어와
(거의 모든 서버에서 수행 정렬이 제거 된) 클라이언트에서 UTF-8로 변환
- 유니 코드로 저장하고 클라이언트에서 UTF-8로 변환하십시오. SQL Server 드라이버는 이미 대부분의 문자열을 유니 코드로 변환하므로 예제가 유니 코드에서 제대로 작동한다는 점에 유의해야합니다. 명백한 단점은 그것이 두 배의 공간을 먹는다는 것이다.
- SQL Server에서 UTF-8 값을 저장할 CLR 사용자 정의 형식을 만듭니다. Microsoft는 SQL Server와 함께 제공되는 샘플을 제공합니다. CodePlex from here에서 샘플을 다운로드 할 수 있습니다. 이 기사의 샘플에 대한 자세한 내용은 Books Online에서 확인할 수도 있습니다. 단점은 SQL Server에서 CLR을 사용하도록 설정해야하며 성능이 얼마나 좋은지 잘 모르겠습니다.
이제는 SQL Server에서 유니 코드를 사용하여 문제없이 샘플 작업을 수행 할 수있었습니다.
If object_id('tempdb..#Test') Is Not Null
Drop Table #Test
GO
Create Table #Test
(
EntrySort int identity(1,1) not null
, ProperSort int
, MixedCase nvarchar(50)
, Lowercase nvarchar(50)
)
GO
Insert #Test(ProperSort, MixedCase, Lowercase)
Select 1, N'ԱբԳդԵզ',N'աբգդեզ'
Union All Select 6, N'ԵլԲնՆն',N'ելբննն'
Union All Select 2, N'ԱգԳսԴԼ',N'ագգսդլ'
Union All Select 3, N'ԲաԴֆդԴ',N'բադֆդդ'
Union All Select 4, N'ԳԳԼասա',N'գգլասա'
Union All Select 5, N'ԴմմլօՏ',N'դմմլօտ'
Union All Select 9, N'ԸխԾդսՂ',N'ըխծդսղ'
Union All Select 7, N'ԶՎլուտ',N'զվլուտ'
Union All Select 10, N'ԹԶէըԿր',N'թզէըկր'
Union All Select 8,N'էԹփձջՐ',N'էթփձջր'
Select * From #Test Order by ProperSort
Select * From #Test Order by Lowercase
Select * From #Test Order by Lower(MixedCase)
이 세 가지 쿼리 모두 동일한 결과를 반환합니다.
방금 특정 텍스트 열의 데이터 정렬을 변경하려고 했습니까? – Gabe
@gabe, 예, 가능했던 모든 일에 데이터 정렬을 변경했습니다. – hgulyan
나는 여기에 오늘 유니콘을 * 유니콘 *으로 계속 읽었다 고 말했습니다. –