私は周りを見回しており、アクセントを区別しない検索の作成に関する多くの情報を見つけました. これは私が求めているものではありません。
一部の強調されたデータが UI で問題を引き起こしているため、影響分析を行う予定です。
それぞれに異なる文字を含む多くの異なる選択を結合する以外に、アクセント付きの文字をフィールドで検索するエレガントな方法はありますか?
私は周りを見回しており、アクセントを区別しない検索の作成に関する多くの情報を見つけました. これは私が求めているものではありません。
一部の強調されたデータが UI で問題を引き起こしているため、影響分析を行う予定です。
それぞれに異なる文字を含む多くの異なる選択を結合する以外に、アクセント付きの文字をフィールドで検索するエレガントな方法はありますか?
COLLATE 句は foo 式を変更して、個別に GROUP BY できるようにします
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;
最初のものは、単なる COUNT ではなく、いくつかの実際の値を提供します。ただし、アクセント付きの単語がいくつかある場合は、すべてではありません
SQL Server 2012 の場合、これを使用できます。
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 番目は、アクセント付きの文字の前にアクセントのない文字を並べ替えることに依存しています。