Accueil › Forums › Généralité SQL › Cours WHERE … LIKE … , les caractères jokers
- AuteurMessages
- 8 juillet 2014 à 16 h 55 min #2418Kaps_Gourdin
Bonjour,
Voila, je commence en SQL là, et j’arrive vite fait à faire des requêtes de lecture plus ou moins complexes (à mon niveau).
J’aurais voulu savoir s’il était possible d’inverser l’utilisation des caractères “%” et “_”, pour les intégrer dans les données de la base et qu’il soit compris de la même manière que lors de leur utilisation dans une requête. Si oui comment puis-je obliger la requête à les interpréter de cette façon.
Ou sinon, quelle est la méthode utilisée pour faire quelque chose d’équivalent?
Pour expliquer ce que je souhaiterais pouvoir faire :
Lorsque j’étudie une pièce d’un matériel, j’obtiens la référence complète de cette pièce. J’aimerais avoir une information précise de cette pièce en fonction de cette référence. Les références sont construites par petits paquets, les trois premiers digits donne l’information sur ça (qui m’intéresse), les deux d’après sur autre chose (qui ne m’intéresse pas), … et le nombre de références grimpe très vite. De plus en fonction des constructeurs, ce ne sont pas les mêmes digits qui sont concernés.
J’ai voulu éviter de faire une ligne par référence (et l’éviter encore si possible), et j’avais écris le “patron” de référence qui me donne les informations qui me sont utiles dans le champreference
, en écrivant REF__AX% au lieux des 200 combinaisons possibles qui donne la même information (c’est un exemple non réel, mais représentatif).
Cependant la requête
SELECT * FROM [table$] WHEREreference
LIKE “REF32AXZ”
ne me retourne pas la ligne voulue (bon par contre je m’en doutais).
C’est donc là que j’ai besoin d’aide, savoir comment procéder pour avoir une ligne pour chaque XXX combinaisons possibles en appel.À titre informatif, je réalise les requêtes en VBA Excel sur des fichiers Excel ou texte.
En vous remerciant pour votre aide,
David6 août 2014 à 9 h 40 min #2446Kaps_GourdinBonjour,
J’informe, des fois qu’il y en ait qui ait le même problème si j’avais été assez clair.
Aujourd’hui j’ai trouvé ce que je voulais faire au départ, c’était plutôt con, mais quand on ne sait pas on n’y pense pas :
Au lieu de faire la requête SELECT * FROM [table$] WHEREreference
LIKE “REF32AXZ”
Il faut faire la suivante : SELECT * FROM [table$] WHERE “REF32AXZ” LIKEreference
C’est-à-dire comparer la référence aux données dans le champ et non l’inverse, de cette façon les caractères % et _ sont bien interprétés même dans la base comme si on les utilisaient dans une requête.
David Louard
- AuteurMessages
Vous devez être connecté pour répondre à ce sujet.