2010-11-19 40 views
6

J'ai une table de données biographiques, et j'ai besoin de faire une requête qui sélectionne les personnes qui ont le mot "mort" dans leur bio et dont la date de mort est NULL. Cela ne fonctionne pas:MySQL Sélectionnez avec LIKE et OERE

SELECT * FROM people 
WHERE bio LIKE '%died%' 
AND death_date IS NULL 

qui sélectionne tout le monde dont death_date est nul, mais sélectionne aussi des gens qui n'ont pas le mot « mort » dans leur bio. Puis-je faire cela en une seule requête?

+2

Etes-vous sûr que cela renvoie des gens qui n'ont pas «mort» dans leur bio? Rappelez-vous qu'il inclura également des mots contenant des morts tels qu'étudiés et imbriqués. – Kibbee

Répondre

5

Il pourrait y avoir un mot comme « completelydied » et ils vont encore être sélectionné. Vérifiez soigneusement si "mort" phrase n'existe pas dans le cadre d'un mot dans les enregistrements que vous avez sélectionnés

+0

Ajout d'un espace avant "mort" semble fonctionner, merci. – kirkaracha

+1

Ne pas oublier que l'ajout d'espace devant 'mort' ne fonctionnera pas si le mot est au début de la bio. –

3

Peut-être que le problème est les citations, utilisez "au lieu de" pour envelopper la clause LIKE.

SELECT * FROM people 
WHERE bio LIKE "%died%" 
AND death_date IS NULL 
+0

L'exécution de la requête comme celle-ci renvoie les mêmes résultats. – kirkaracha

+0

Quel type de données est le champ "bio"? – Webnet

0

je vous suggère de faire bio majuscule et avoir comme "% DIED%" aussi s'assurer que death_date est vraiment nul, voir Si vous obtenez une réponse des deux cas indépendamment, quelle réponse obtenez-vous?

+0

L'utilisation de WHERE death_date IS NULL par lui-même renvoie les personnes dont le paramètre death_date est NULL. – kirkaracha

+0

qu'en est-il? O WH SUPERIEUR (bio) COMME '% DIED%' –