45 votes

Comment interroger les champs contenant un texte donné dans MySQL ?

SELECT stuff REGEXP 'itunes' as is_itunes;

Dans cette requête MySQL, si le mot "stuff" contient le mot "itunes", il sera marqué comme itunes.

Cependant, je veux dire "commencer par". Comment puis-je vérifier la présence de "commence par" au lieu de n'importe où dans le texte ?

92voto

Marc B Points 195501
SELECT ... WHERE stuff LIKE 'itunes%';

Ici % sert de caractère de remplacement, ce qui permet de faire correspondre les lignes avec le caractère stuff égal à l'un des champs suivants itunes , itunesfoo , itunes1 , ...

Plus d'informations : Opérateur SQL LIKE à l'adresse W3Schools .

8voto

Kaivosukeltaja Points 6219

Ajoutez le symbole de l'aiguille, il représente le début de la chaîne :

SELECT stuff REGEXP '^itunes' as is_itunes;

Cependant, LIKE 'itunes%' comme suggéré par Marc devrait être beaucoup plus rapide, surtout si vos index sont configurés correctement.

6voto

Meelah Points 233
SELECT ... WHERE LEFT(stuff, 6) = 'itunes';

5voto

O_Z Points 1400

Pour un champ indexé, c'est beaucoup mieux de le faire :

select ... where stuff >='itunes' AND stuff < 'itunet'

Cela ne créera pas un balayage complet de la table, et utilisera l'index.

0voto

Elaine Points 1
SELECT ... WHERE stuff REGEXP '[[:<:]]itunes';

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