Aller au contenu

[SQL Server] Trouver un caractère spécial dans un SELECT


JarAsh

Messages recommandés

Bonjour à tous,

 

J'ai un problème de requête tout bête dans SQL Server, voici ce que je veux faire :

 

J'ai une table PERSONNES avec un champs PRENOM. Dedans j'ai une ligne avec un prénom Aur├⌐lien.

J'aimerai faire un SELECT qui récupère la ligne par rapport au prénom, donc je fais :

 

SELECT *

FROM PERSONNES

WHERE PRENOM = 'Aurélien'

 

Mais ça ne me retourne aucune ligne.

Pareil avec un LIKE :

 

SELECT *

FROM PERSONNES

WHERE PRENOM LIKE 'Aurélien'

 

Pourtant cela fonctionne :

 

SELECT *

FROM PERSONNES

WHERE PRENOM LIKE 'Aur%'

 

Les caractères spéciaux semblent ne pas être reconnus :(

 

Une idée ?

 

Merci.

 

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...
  1. Quand on n'arrive pas à utiliser "=" en SQL, il faut toujours vérifier le type de la colonne:
  • Si tu as une colonne CHAR[xxx], les espaces comptent! "Aurélien      " n'est pas "Aurélien". Transforme alors ta colonne en varchar.
  • Si tu comptes mettre des accents et autres caractères diacritiques, utilise les types NCHAR/NVARCHAR qui évitent des problèmes d'encodage de caractère, et utilise le préfixe "N" pour tes chaînes en dur (ex: 'Aurélien' -> N'Aurélien')
  1. Ne pas mélanger les encodages
  • Quel logiciel t'affiche "Aur├⌐lien"?
  • Et quel logiciel a intégré "Aur├⌐lien" dans ta base de données?

C'est important, car ici tu sembles face à un problème d'encodage.

Tu peux par exemple écrire "Aurélien" dans un fichier texte sous Windows et l'afficher sous DOS par la commande TYPE, tu obtiens "AurÚlien".

Si tu enregistres "Aurélien" sous DOS (par exemple: ECHO Aurélien > test.txt), quand tu l'affiche sous Windows tu obtiens Aur‚lien.

 

En bref, l'ordi doit être au courant de la façon dont tu codes les accents. Evite comme la peste des scripts sous DOS pour intégrer des données accentuées.

 

Soit:

  • Ton logiciel ne sait pas interpréter un accent, dans ce cas, une recherche sur 'Aurélien' devrait fonctionner, au pire avec un COLLATE virant accents et majuscules
  • Tu as stocké des caractères réellement bizarres par mégardes, non reconnus comme des caractères accentués. Là c'est moins drôle, car il n'y a pas de fonctionnalité intégrée pour virer ce genre de caractères dans les recherches, sauf un COLLATE ASCII peut-être?

Pour rappel, le COLLATE permet d'indiquer à SQL server comment comparer deux chaînes de caractère. Par défaut, il les compare sans prendre en compte les majuscules/minuscules (insensible à la casse), mais les accents comptent. Tu peux lui dire de considérer que é,è,ê,e soient les mêmes lettres par exemple, oului dire de faire une comparaison binaire.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...