2009-07-15 4 views
2

회사 이름 목록이 있으며 사용자는 시스템에 들어가기 위해 회사 이름을 입력해야합니다. "Pré ABC"라는 회사가 있다고 가정 해 봅시다. 사용자가 "Pre"또는 "Pré"를 입력 할 수있게하려고합니다.T-SQL은 특수 문자와 일치합니다. Pre는 일치해야합니다.

처음에는 이것이 LIKE 문의 빌드 인 기능이라고 생각했지만 불행히도 그렇지 않았습니다. 이견있는 사람?

+0

몇일 전에이 기사를 읽었으며이 질문에 답하는 것이 정말 재미 있습니다. 이 주제에 대한 평가가 좋다;) – Sung

답변

5

이것은 데이터 정렬과 관련이 있습니다. 각 데이터베이스는 고유 한 데이터 정렬을 갖습니다 (모든 열은 해당 데이터 정렬을 재정의 할 수도 있습니다). 귀하의 경우에는 액센트에 민감하지 않고 대소 문자를 구분하지 않는 데이터 정렬을 찾고 있습니다. 데이터베이스를 "SQL_Latin1_General_CP1_CI_AI"으로 구성하십시오. 이는 "코드 페이지 1, 대소 문자를 구별하지 않고 액센트를 구분하지 않는 코드 페이지"로 디코딩하여 원하는대로 쿼리를 작동시켜야합니다.

+0

데이터 정렬 순서의 전체 구문을 조사하는 동안 나를 때려 눕히십시오. 이것은 또한 데이터베이스 글로벌이라는 이점을 가지고 있으므로 전체 시스템이 이러한 방식으로 작동합니다. – Godeke

+0

이것이 작동하는 것 같습니다. 그러나 전체 데이터베이스에서 수행하지는 않았지만 다음과 같은 특정 비교 작업을 수행했습니다. table.X COLLATE SQL_Latin1_General_CP1_CI_AI = @Name COLLATE SQL_Latin1_General_CP1_CI_AI – Zyphrax

3
SELECT 1 
WHERE N'Pré ABC' COLLATE LATIN1_GENERAL_CI_AI LIKE N'%Pre%' 
+0

간단하지만 좋은 예입니다. – Sung

관련 문제