[SQL] Statement le moins restrictif pour une recherche

Statement le moins restrictif pour une recherche [SQL] - Programmation

Marsh Posté le 06-01-2002 à 13:09:45    

Bonjour,
 
Je souhaite faire une recherche sur des chaines de caractères et je souhaite que la requette SQL soit la moins restrictive possible:
1. comment ignorer les majuscules/minscules,
2. Quel est le caractère d'échappement (% en mySQL me semble t'il)
 
Merci d'avance!

Reply

Marsh Posté le 06-01-2002 à 13:09:45   

Reply

Marsh Posté le 07-01-2002 à 11:20:20    

1. Il suffit de convertir les 2 chaînes composant le critère en majuscule :
SELECT... FROM... WHERE UPPER(Nom_Colonne1) = UPPER(Nom_Colonne2)
 
2. caractère d'échappement = %
Exemple : WHERE Nom_mois LIKE 'Jan%' renverra tous les mois commençant par 'Jan'
Attention, WHERE Nom_mois LIKE 'Ma%' renverra Mars et Mai !
 
Un mix des 2 points précédents donnera :  
... WHERE UPPER(Nom_mois) like 'MA%'
et renverra indifféremment MARS, mars, MAI, mai, Mars, Mai...

Reply

Marsh Posté le 07-01-2002 à 12:08:50    

j'avait vu unenouvelle possibilité de mysql mais je l'ai jamais mis en oeuvre:
 
http://dev.nexen.net/docs/mysql/an [...] Search.php

Reply

Marsh Posté le 07-01-2002 à 16:47:42    

irulan a écrit a écrit :

1. Il suffit de convertir les 2 chaînes composant le critère en majuscule :
SELECT... FROM... WHERE UPPER(Nom_Colonne1) = UPPER(Nom_Colonne2)
 
2. caractère d'échappement = %
Exemple : WHERE Nom_mois LIKE 'Jan%' renverra tous les mois commençant par 'Jan'
Attention, WHERE Nom_mois LIKE 'Ma%' renverra Mars et Mai !
 
Un mix des 2 points précédents donnera :  
... WHERE UPPER(Nom_mois) like 'MA%'
et renverra indifféremment MARS, mars, MAI, mai, Mars, Mai...  




Le like ou le = n'est pas case sensitif si les champs sont pas avec la caractéristique  BINARY, donc le UPPER est inutile :)

Reply

Marsh Posté le 07-01-2002 à 17:44:56    

:non:  
Sous Oracle, ça marche  :p
Je viens de tester :
Where Nom_Mois like 'NOV%' ne me renvoie que les lignes avec NOVEMBRE, alors que Where UPPER(Nom_Mois) like 'NOV%' me renvoie toutes les lignes de la table avec 'NOVEMBRE' ou 'Novembre' !
 
Et ma colonne de nom est un varchar2(10)...

 

[edtdd]--Message édité par irulan--[/edtdd]

Reply

Marsh Posté le 20-01-2002 à 22:09:59    

moi je parlais de MySQL :D
PE que oracle est case sensitif :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed