2013-05-21 1 views
0

나는 주변을 둘러 보았고 악센트를 구분하지 않는 검색을 만드는 데 관련된 많은 정보를 발견했습니다. 이게 내가 한 일이 아니야.악센트 부호가있는 문자 검색

일부 액센트가있는 데이터가 내 UI에서 문제를 일으키고 있으며 일부 영향 분석을 수행하려고합니다.

각각 다른 문자와 함께 다양한 선택을 unioning 이외의 문자 악센트 어떤에 대한 필드를 검색하는 우아한 방법이 있나요?

답변

0

COLLATE 절은 별도로

DECLARE @t TABLE (foo varchar(100)); 

INSERT @t VALUES ('bar'), ('bár'), ('xxx'), ('yyy'), ('foo'), ('foó'), ('foö'); 

SELECT 
    foo COLLATE Latin1_General_CI_AI, 
    MIN(foo COLLATE Latin1_General_CI_AS), MAX(foo COLLATE Latin1_General_CI_AS) 
FROM 
    @t 
GROUP BY 
    foo COLLATE Latin1_General_CI_AI 
HAVING 
    MIN(foo COLLATE Latin1_General_CI_AS) <> MAX(foo COLLATE Latin1_General_CI_AS); 

또는

SELECT 
    foo COLLATE Latin1_General_CI_AI, 
    COUNT(*) 
FROM 
    @t 
GROUP BY 
    foo COLLATE Latin1_General_CI_AI 
HAVING 
    COUNT(*) > 1; 

에 의해 그룹화 할 수 있도록 foo는 식을 변경 첫 번째가 아니라 단지 수보다 몇 가지 실제 값을 제공합니다. 그러나 여러 악센트 단어 SQL 서버 2012

이 모든 경우에, 당신은

+0

나 '이전에 악센트 부호가있는 문자가 아닌 액센트 문자의 정렬에 의존이

SELECT * FROM ( SELECT FIRST_VALUE(foo) OVER (PARTITION BY foo COLLATE Latin1_General_CI_AI ORDER BY foo COLLATE Latin1_General_CI_AS) AS safeFoo, foo FROM @t ) X WHERE safeFoo <> foo 

제 1 회와 3을 사용할 수 있습니다 개개인을 얻으 려하지 않고 있습니다. 난 단지 특정 열에 악센트 부호가있는 문자가있는 행의 전체 개수가 필요합니다. –

+0

두 번째 것을 수정하십시오. COLLATE의 사용이 여전히 적용됩니다. – gbn