Bonjour,
je voudrais savoir si dans une requête il est identique de faire :
TOTO like maVar
TOTO = maVar
Je ne vois pas trop la différence...
Je pense que le like est plutôt utiliser quand on met % devant ou après le mot...
Merci pour vos réponses
Version imprimable
Bonjour,
je voudrais savoir si dans une requête il est identique de faire :
TOTO like maVar
TOTO = maVar
Je ne vois pas trop la différence...
Je pense que le like est plutôt utiliser quand on met % devant ou après le mot...
Merci pour vos réponses
Bonjour,
cf doc Officielle
http://download.oracle.com/docs/cd/B...7.htm#i1034153
Procédons par l'exemple. Avec le mot clé LIKE , tu peut utiliser :
*'%AN%' : recherche de tous les mots contenant AN
*'%XYZ' : tous ls mots finissant par XYZ
.
.
.
Chose que tu ne peut pas sfaire avec le =. Tu ne peut sélectionner que les mots qui sont exactement identiques au prédicat de sélection.
Ce n'est pas du toue la même chose.Citation:
TOTO like maVar
TOTO = maVar
Démonstration :
A +Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SELECT * FROM(SELECT 'hotel du bon coucher' AS Nom FROM DUAL UNION ALL SELECT 'hotel ***' AS Nom FROM DUAL) AS T WHERE Nom LIKE 'hotel ***'; -- et : SELECT * FROM(SELECT 'hotel du bon coucher' AS Nom FROM DUAL UNION ALL SELECT 'hotel ***' AS Nom FROM DUAL) AS T WHERE Nom = 'hotel ***'
J'en apprend tout les jours : '?' et '*' comme "pattern-matching characters" dans Oracle.
Vous etes sûr ?
ha bah non :koi: c'est _ autant pour moi :oops:
Enfin, remplace * par % et ? par _ et les remarques restent vraies :roll:
On peut imaginer :
Et voila comment une léve une exception TOO_MANY_ROWS. = et LIKE ne font pas la même chose point. Si c'est pour comparer des valeurs alors on utilise =, si c'est pour faire une recherche avec caractères génériques ce sera LIKE.Code:
1
2
3
4
5
6
7
8
9
10
11
12 SQL> SELECT * 2 FROM(SELECT 'hotel mon_hotel' AS Nom 3 FROM DUAL 4 UNION ALL 5 SELECT 'hotel monahotel' AS Nom 6 FROM DUAL) 7 WHERE Nom like 'hotel mon_hotel'; NOM --------------- hotel mon_hotel hotel monahotel
L'erreur a été corrigé c'est % pour 0 ou plusieurs caractères et _ pour 1 et 1 seul caractère
Par contre on peut très bien tester une requête avec un % ou un _, il suffit d'utiliser un caractère d'échappement
Exemple:
(doc oracle)Code:
1
2
3 SELECT employee_id, job_id FROM employees WHERE job_id LIKE 'SA\_R%' ESCAPE '\';
Ca peut toujours servir ;)
@++