5 votes

Demande de correspondance exacte d'une chaîne de caractères en SQL

Je veux rechercher la correspondance exacte d'une chaîne de caractères dans une table de base de données.

Lorsque j'écris la requête comme

select description from tproduct where description like '%diamond%'

il s'exécute et donne les résultats sous forme de wild card la requête. Par exemple, j'ai obtenu ringdiamond, diamondmaster, etc.

Mais je ne veux obtenir que le "diamant".

Pour cela, j'ai fait comme :

select description from tproduct where description = 'diamond'

Mais il donne une erreur :

Erreur : Colonne inconnue 'diamond' dans la clause 'where'.

La colonne de description contient :

This bracelet is composed of round diamond surrounded by milgrain detailing. Its secure setting prevents it from twisting and ensures it will sit impeccably on her wrist.

This stylish design is the perfect accessory for the day or evening. Akoya cultured pearls are lined up by a string of bezel-set round diamond.

9voto

ratsbane Points 870

Si je comprends bien la question, vous voulez faire correspondre "diamond" lorsqu'il s'agit d'un mot distinct et non d'une partie d'un autre mot comme "diamondville". Vous pourriez faire quelque chose comme SELECT * FROM tproduct WHERE description like '% diamond %' et cela correspondrait à tous les enregistrements qui ont "diamond" entouré d'espaces.

Mais ça ne marcherait pas. Cela ne trouverait pas les enregistrements où la description commence par "Diamant" ou où il y a une virgule ou un point après "Diamant".

Vous devez faire correspondre une expression régulière. Vous pouvez spécifier les limites des mots avec cela :

select * from t2 where description regexp '[[:<:]]diamond[[:>:]]';

Consultez cette page pour plus d'informations sur les expressions régulières MySQL : http://dev.mysql.com/doc/refman/5.1/en/regexp.html

3voto

Bill Karwin Points 204877

Vous pouvez utiliser une expression régulière avec un modèle spécial pour les limites de mots.

select description from tproduct 
where description regexp '[[:<:]]diamond[[:>:]]'

Voir REGEXP .

0voto

gmhk Points 4151
select description from tproduct where description like 'diamond'

0voto

Srinu Babu Points 158

Pour SQL Server : Description
SELECT description FROM tproduct WHERE description = 'diamond' COLLATE SQL_Latin1_General_CP1_CS_AS

-2voto

Mudassir Points 187
select description from tproduct where description = 'diamond'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X