Cas SQL - Ignore lors de la recherche d'une chaîne de caractères
j'ai les données suivantes dans un Tableau
PriceOrderShipped
PriceOrderShippedInbound
PriceOrderShippedOutbound
en SQL je dois écrire une requête qui recherche une chaîne dans une table. En cherchant une chaîne de caractères, il devrait ignorer case. Pour la requête SQL mentionnée ci-dessous
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%PriceOrder%'
donne tout ce qui précède données, alors que
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%Priceorder%'
ne donne pas.
par exemple. quand je cherche '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. Ne laissez-moi savoir où je vais mal.
SELECT DISTINCT COL_NAME FROM myTable WHERE
COL_NAME COLLATE latin1_general_cs LIKE '%Priceorder%'
4 réponses
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 l'insensibilité cas - SQL Serveur ignorer cas dans un où l'expression
Essayez quelque chose comme:
SELECT DISTINCT COL_NAME
FROM myTable
WHERE COL_NAME COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%priceorder%'
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 .
j'aimais bien.
comme ceci.
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%Priceorder%'
Dans postgresql.