Normalement, lorsqu’on interroge une base de données avec SELECT, il est courant que l’on souhaite rechercher les enregistrements correspondant à une chaîne de recherche donnée.
Par exemple:
SELECT * FROM customers WHERE name LIKE '%Bob Smith%';
Cette requête devrait me donner tous les enregistrements où "Bob Smith" apparaît n'importe où dans le champ du nom.
Ce que j'aimerais faire, c'est l'inverse.
Au lieu de rechercher tous les enregistrements contenant «Bob Smith» dans le champ de nom, je souhaite rechercher tous les enregistrements dont le champ de nom se trouve dans «Robert Bob Smith III, PhD.», Un argument de chaîne de la requête.
Il suffit de tourner le LIKE autour
SELECT * FROM customers
WHERE 'Robert Bob Smith III, PhD.' LIKE CONCAT('%',name,'%')
Vous pouvez utiliser des expressions régulières comme ceci:
SELECT * FROM pet WHERE name REGEXP 'Bob|Smith';
Vous pouvez aussi utiliser
SELECT * FROM customers WHERE name LIKE "%Bob Smith%";
remarquez les doubles citations
Dans la requête ci-dessus, si nous recherchons un caractère spécial, par exemple: '__' ou '()' pour récupérer toutes les données,
SQL> sélectionnez * à partir de test_brck où NVL (UPPER (nom_véhicule), 1) LIKE nvl (UPPER ('%' || & v_name || '%'), NVL (UPPER (nom_vol,));
Entrez la valeur pour v_name: '_'
ancien 2: où NVL (UPPER (v_name), 1) LIKE nvl (UPPER ('%' || & v_name || '%'), NVL (UPPER (v_name), 1))
new 2: où NVL (UPPER (v_name), 1) LIKE nvl (UPPER ('%' || '_' || '%'), NVL (UPPER (v_name), 1))
Ramu (est allé gbl)
Ramj
Ramu_Karan (allé blr)
Sidd_Karan
ABC% ^
xy123
abc
7 lignes sélectionnées.
sortie:
Ramu_Karan (allé blr)
Sidd_Karan