Imaginons que nous enregistrions des informations dans une colonne NVARCHAR et que nous ne voulions pas avoir à nous soucier des accents ou de la casse des caractères pour garantir l’unicité.
Que faut-il faire ?
L’exemple
Prenons l’exemple d’une table Person comportant une colonne Name.
Je voudrais m’assurer que la saisie de l’utilisateur ne pose pas de problème d’unicité dans les enregistrements, que la saisie soit « Jeremie Litzler » ou « Jérémie Litzler ».
Vérification du classement actuel
Tout d’abord, vérifions le classement actuel de la colonne :
|
|
Interprétation du paramètre COLLATION
Supposons que le paramètre de collation soit Latin1_General_100_CI_AI. Qu’est-ce que cela signifie ?
- Latin1_General_100 : collation moderne avec les règles de tri de la version 100
- CI = insensible à la casse
- AI = insensible aux accents
La solution
Ainsi, si je souhaite éviter que les entrées « Jeremie Litzler » et « Jérémie Litzler » soient tous deux insérés, je dois modifier la collation en Latin1_General_100_CI_AS :
- AS = sensible aux accents
De cette façon, l’exécution de SELECT * FROM Person WHERE NAME = 'Jeremie Litzler' renverrait la même entrée que SELECT * FROM Person WHERE NAME = 'Jérémie Litzler'.
Aller plus loin
La meilleure solution consiste à ajouter une contrainte d’unicité :
|
|
Veillez toutefois à ce que votre colonne, si elle est de type NVARCHAR, n’utilise pas la précision MAX. Vous devez limiter la taille de la colonne pour créer la contrainte d’unicité.
Documentation
Référence : Microsoft Learn.
Suivez-moi !
Merci d’avoir lu cet article. Assurez-vous de me suivre sur X, de vous abonner à ma publication Substack et d’ajouter mon blog à vos favoris pour ne pas manquer les prochains articles.
Crédits: Image de Microsoft Server