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%'
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%')
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%'
Comme ça.
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%Priceorder%'
Dans postgresql.
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 .