172 votes

SQL- Ignorer la casse lors de la recherche d'une chaîne de caractères

J'ai les données suivantes dans un tableau
PrixCommandeExpédition
PrixCommandeExpéditionEntrée
PrixCommandeExpéditionSortie

En SQL, je dois écrire une requête qui recherche une chaîne dans une table. Lors de la recherche d'une chaîne, il faut ignorer la casse. Pour la requête SQL mentionnée ci-dessous

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%PriceOrder%' 

donne toutes les données ci-dessus, tandis que

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%Priceorder%' 

ne donne pas.

Par exemple, lorsque je recherche 'PriceOrder' ou 'priceOrder', cela fonctionne mais 'priceorder' ou 'Priceorder' ne fonctionne pas. J'ai essayé avec la requête ci-dessous en utilisant COLLATE, mais cela ne fonctionne pas. Faites-moi savoir où je me trompe.

SELECT DISTINCT COL_NAME FROM myTable WHERE 
COL_NAME COLLATE latin1_general_cs LIKE '%Priceorder%'

327voto

Aditya Kakirde Points 834

Utilisez quelque chose comme ça -

SELECT DISTINCT COL_NAME FROM myTable WHERE UPPER(COL_NAME) LIKE UPPER('%PriceOrder%')

o

SELECT DISTINCT COL_NAME FROM myTable WHERE LOWER(COL_NAME) LIKE LOWER('%PriceOrder%')

35voto

Hangk Points 375

Comme ça.

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%Priceorder%'

Dans postgresql.

11voto

Miguel-F Points 6540

Voir cette question similaire et la réponse à la recherche de l'insensibilité à la casse. Le serveur SQL ignore la casse dans une expression where

Essayez d'utiliser quelque chose comme :

SELECT DISTINCT COL_NAME 
FROM myTable 
WHERE COL_NAME COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%priceorder%'

5voto

Vous devriez probablement utiliser SQL_Latin1_General_Cp1_CI_AS_KI_WI comme votre collation. Celle que vous spécifiez dans votre question est explicitement sensible à la casse.

Vous pouvez voir une liste de collations aquí .

1voto

Codemaker Points 639

L'opérateur like n'est pas sensible à la casse dans presque tous les compilateurs SQL. Si vous n'obtenez toujours pas de résultats sensibles à la casse, utilisez l'opérateur iLike. Vous pouvez également le comparer en changeant la casse à l'aide de la méthode Upper().

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%PriceOrder%' 

o

SELECT DISTINCT COL_NAME FROM myTable WHERE UPPER(COL_NAME) LIKE UPPER('%PriceOrder%')
SELECT DISTINCT COL_NAME FROM myTable WHERE LOWER(COL_NAME) LIKE LOWER('%PriceOrder%')

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