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%'

1voto

aditya Points 507

Si quelqu'un qui utilise ORACLE peut effectuer des changements au niveau de la base de données elle-même

ALTER SESSION SET NLS_COMP=LINGUISTIC;  
ALTER SESSION SET NLS_SORT=BINARY_CI;  

Note : - Oracle

1voto

ReGo Points 13

Voici la solution que j'utilise.

SELECT * FROM TABLE WHERE COLUMN ~* '.*search_keyword_any_case.*'

Cela permettra également de vérifier la présence de sous-chaînes. Dans l'ensemble, c'est la meilleure solution que j'ai trouvée sur Internet. J'utilise la même chose pour mettre en œuvre la recherche insensible à la casse des sous-chaînes pour les colonnes de la table.

0voto

Vinik Points 1

SOLUTION DE RECHANGE ET MEILLEURE SOLUTION :
Vous pouvez également utiliser une "collation" spécifique comme utf8 > utf8_unicode_ci. Toutes les requêtes seront alors insensibles à la casse. Mais les données peuvent être en majuscules à certains endroits. Il faut donc s'assurer qu'il n'y a pas de jumeau avec des cas différents possibles (comme utiliser une colonne UNIQUE pour être sûr).

Exemple de requête :
https://prnt.sc/1vjwxd1
Conception de la table et collationnement utilisé : https://prnt.sc/1vjx3h5 .

"Une bonne conception de la base de données peut vous épargner beaucoup de travail dans les requêtes" - Moi :)

-1voto

Comme j'en ai fait l'expérience dans mes projets, j'aime les résultats de recherche sensibles à la casse et les résultats LIKE insensibles à la casse. Je ne sais pas comment cela fonctionne mais j'en ai fait l'expérience dans mes projets. utiliser hibernate

UTILISATEURS

  1. jhon
  2. Jhonny
  3. jHames

quand j'ai utilisé

from Users userName LIKE 'jh%'

résultats tous les trois et quand

 from Users userName like 'jh%'

résultats seulement jhon et jhonny

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