web-dev-qa-db-fra.com

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


J'ai les données suivantes dans un tableau
PriceOrderShipped
PriceOrderShippedInbound
PriceOrderShippedOutbound

En SQL, j’ai besoin d’écrire une requête qui cherche une chaîne dans une table. Lors de la recherche d'une chaîne, il devrait 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, alors que

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

ne donne pas.

Par exemple. quand 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 vais mal.

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

Utilisez quelque chose comme ça -

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

ou

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

Voir cette question similaire et la réponse à la recherche avec 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%'
10
Miguel-F

Comme ça.

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

Dans postgresql.

4
Hangk

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

Vous pouvez voir une liste de collations ici .

4
user806549