111 votes

Requête SQL comme une chaîne de recherche qui commence par

Apprentissage de SQL. J'ai une table de jeux simple avec le champ titre. Je veux rechercher en fonction du titre. Si j'ai un jeu appelé Age of Empires III: Dynasties, et j'utilise LIKE avec le paramètre Age of Empires III: Dynasties, tout fonctionne bien, la recherche renvoie l'enregistrement avec ce nom. Mais si je recherche avec Age of Empires III, aucun enregistrement n'est renvoyé :

SELECT * from games WHERE (lower(title) LIKE 'age of empires III');

Cela ne renvoie rien. Devrais-je utiliser autre chose à la place de LIKE ?

J'utilise MySQL.

133voto

mr_eclair Points 9503
SÉLECTIONNER * à partir de jeux OÙ (lower(title) LIKE 'age of empires III');

La requête ci-dessus ne renvoie aucune ligne car vous recherchez la chaîne exacte 'age of empires III' qui n'existe dans aucune ligne.

Donc, pour faire correspondre cette chaîne avec une chaîne différente qui contient 'age of empires' comme sous-chaîne, vous devez utiliser '%votre chaîne ici%'

Plus sur comparaison de chaînes mysql

Vous devez essayer ceci

SÉLECTIONNER * à partir de jeux OÙ (lower(title) LIKE '%age of empires III%');

Dans Like '%age of empires III%' cela recherchera n'importe quelle sous-chaîne correspondante dans vos lignes, et elle s'affichera dans les résultats.

75voto

misha Points 1425

Vous devez utiliser le joker % :

SELECT * from games WHERE (lower(title) LIKE 'age of empires III%');

17voto

matepal297 Points 809

En dehors de l'utilisation de %, age of empires III en minuscules est age of empires iii donc votre requête devrait être :

select *
from games
where lower(title) like 'age of empires iii%'

11voto

J S Points 77

OÙ CustomerName LIKE 'a%' --Trouve toutes les valeurs qui commencent par "a"

OÙ CustomerName LIKE '%a' --Trouve toutes les valeurs qui se terminent par "a"

OÙ CustomerName LIKE '%or%' --Trouve toutes les valeurs qui contiennent "or" à n'importe quelle position

OÙ CustomerName LIKE '_r%' --Trouve toutes les valeurs qui ont "r" à la deuxième position

OÙ CustomerName LIKE 'a__%' --Trouve toutes les valeurs qui commencent par "a" et sont d'au moins 3 caractères de longueur

OÙ ContactName LIKE 'a%o' --Trouve toutes les valeurs qui commencent par "a" et se terminent par "o"

-- Insensible à la casse 2 SELECT * FROM my_table WHERE upper(my_column) LIKE 'SEARCHED %'; -- commence par

3 SELECT * FROM my_table WHERE upper(my_column) LIKE '% SEARCHED'; -- se termine par

4 SELECT * FROM my_table WHERE upper(my_column) LIKE '%SEARCHED%'; -- contient

8voto

DH__ Points 2210

COLLATE UTF8_GENERAL_CI fonctionnera comme ignore-case. UTILISATION:

SELECT * from games WHERE title COLLATE UTF8_GENERAL_CI LIKE 'age of empires III%';

ou

SELECT * from games WHERE LOWER(title) LIKE 'age of empires III%';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X