2009-08-12 8 views
0

J'ai un peu de contenu dans notre base de données avec (pour notre langue) des caractères 'étranges'.Chaîne comparez avec 'strange chars' dans SqlServer

Par exemple:

Å 

Lorsque vous utilisez l'instruction like dans Sql Server avec la lettre A, cela ne retourne pas de résultat parce que le Å est pas un A.

est-il un moyen de SqlServer pour traiter la Å comme E (et é comme etc « e »)?

Répondre

4

Voulez-vous dire "Å as A" ou "Å as E"?

Pour la première, vous pouvez forcer la collation à l'accent insensible

SELECT 1 WHERE 'Å' = 'A' --No 
SELECT 1 WHERE 'Å' COLLATE LATIN1_General_CI_AI = 'A' --Yes 

SELECT 1 WHERE 'é' = 'e' --No 
SELECT 1 WHERE 'é' COLLATE LATIN1_General_CI_AI = 'e' --Yes 
+0

Merci, cela fonctionne. Avez-vous une idée si cela est également possible dans Linq pour les entités? – Michel

+0

De rien. Désolé, je ne le fais pas. – gbn

+0

n'a pas trouvé non plus, a créé un SP avec votre code. Fonctionne très bien. – Michel

2

Vous pouvez inclure une clause COLLATE dans votre requête pour spécifier une collation insensible accent:

SELECT * 
FROM your_table 
WHERE your_column LIKE 'A%' COLLATE Latin1_General_CI_AI 

Vous aurez besoin d'utiliser un classement approprié pour votre langue. La fonction fn_helpcollations intégrée vous donnera une liste de tous les classements pris en charge:

SELECT * 
FROM fn_helpcollations()