L'utilisation de LIKE est très courante dans MySQL. Nous l'utilisons comme ceci: WHERE field LIKE '%substring%'
. Où nous avons une sous-chaîne et le champ a une chaîne complète. Mais ce dont j'ai besoin, c'est quelque chose de contraire. J'ai des sous-chaînes dans le champ. Donc, je veux cette ligne qui contient une sous-chaîne de ma chaîne. Supposons que le tableau soit:
----+-------------------
id | keyword
----+-------------------
1 | admission
----+-------------------
2 | head of the dept
----+-------------------
et j'ai une chaîne de l'utilisateur: Tell me about admission info
. J'ai besoin d'une telle requête MySQL qui renvoie admission
car il s'agit d'une sous-chaîne de chaîne utilisateur. Quelque chose comme:
SELECT keyword FROM table WHERE (keyword is a substring of 'Tell me about admission info')
merci d'avance.
Vous recherchez l'opérateur COMME
Correspondance de modèle à l'aide de la comparaison d'expressions régulières simples SQL. Renvoie 1 (TRUE) ou 0 (FALSE). Si expr ou pat est NULL, le résultat est NULL.
Quelque chose comme
SELECT keyword
FROM table
WHERE ('Tell me about admission info' LIKE CONCAT('%', keyword, '%'))
Cela fonctionne très bien, en utilisant REGEXP
:
SELECT keyword
FROM table
WHERE 'Tell me about admission info' REGEXP keyword;
Mais cela ne fonctionne que si keyword
ne contient pas Expression régulière s'échappe ...
C'est à dire. Cela fonctionnera bien alors que keyword
ne contient que des lettres, des chiffres, des espaces, etc.
Essayez quelque chose comme ceci:
SELECT CASE WHEN 'Tell me about admission info'
LIKE CONCAT('%',`keyword`,'%')
THEN `keyword` else null END as `keyword`
FROM table1
WHERE CASE WHEN 'Tell me about admission info'
LIKE CONCAT('%',`keyword`,'%')
THEN `keyword` else null END is not null;