Aplatissement des caractères nationaux dans SQL Server

J'ai une colonne qui contient des noms de familiers avec des caractères nationaux. Comment puis-je écrire la requête pour les faire correspondre tous dans une condition?

|PetName| Ćin ćin Ĉin ĉin Ċin ċin Čin čin 

sth comme FLATTEN funciton ici:

 ...WHERE LOWER(FLATTEN(PetName)) = 'cin' 

NVARCHAR de NVARCHAR de NVARCHAR à VARCHAR mais cela n'a pas aidé. Je voudrais éviter d'utiliser REPLACE pour chaque personnage.

cela devrait fonctionner parce que la base de collation cyrillique cas tous les signes diacritiques comme Đ, Ž, Ć, Č, Š, etc …

 declare @t table(PetName nvarchar(100)) insert into @t SELECT N'Ćin' union all SELECT N'ćin' union all SELECT N'Ĉin' union all SELECT N'ĉin' union all SELECT N'Ċin' union all SELECT N'ċin' union all SELECT N'Čin' union all SELECT N'čin' SELECT * FROM @t WHERE lower(PetName) = 'cin' COLLATE Cyrillic_General_CS_AI 

Vous pouvez changer le classment utilisé pour la comparaison:

 WHERE PetName COLLATE Cyrillic_General_CI_AI = 'cin' 

Il n'y a pas vraiment un moyen ou une fonction embeddede qui va supprimer les accents des caractères. Si vous faites des comparaisons (LIKE, IN, PATINDEX etc), vous pouvez juste forcer COLLATE si la colonne / db n'est pas déjà insensible à l'accent.

Normalement, une requête comme celle-ci

 with test(col) as ( select 'Ćin' union all select 'ćin') select * from test where col='cin' 

renvoie les deux colonnes, car le classment par défaut (sauf si vous le modifiez) est insensible. Cela ne fonctionnera pas pour les index FULLTEXT cependant.