2010-11-19 4 views
6

Ich habe eine Tabelle mit biographischen Daten, und ich muss eine Abfrage durchführen, die Personen auswählt, die das Wort "gestorben" in ihrer Bio haben und deren Todesdatum NULL ist. Dies funktioniert nicht:MySQL Wählen Sie mit LIKE und WO

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

, dass jeder, dessen death_date wählt ist null, aber auch wählt Leute, die „gestorben“ in ihrem Bio nicht das Wort haben. Kann ich das in einer Abfrage tun?

+2

Bist du sicher, dass es Personen zurückgibt, die in ihrer Biografie nicht "gestorben" sind? Denken Sie daran, dass es auch Wörter enthalten wird, die gestorben sind, wie zum Beispiel studiert und verkörpert. – Kibbee

Antwort

5

Es ist ein Wort wie sein könnte ‚completelydied‘ und sie sind immer noch ausgewählt werden. Prüfen Sie sorgfältig, ob "gestorben" Phrase existiert nicht als Teil eines Wortes in den Aufzeichnungen, die Sie ausgewählt haben.

+0

Ein Leerzeichen hinzufügen, bevor "gestorben" zu funktionieren scheint, danke. – kirkaracha

+1

Vergessen Sie nicht, dass das Hinzufügen von Leerzeichen vor "Tod" nicht funktioniert, wenn das Wort am Anfang der Bio steht. –

3

Vielleicht ist das Problem ist die Anführungszeichen, verwenden Sie "statt" die LIKE-Klausel zu wickeln.

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

Wenn Sie die Abfrage wie folgt ausführen, werden die gleichen Ergebnisse zurückgegeben. – kirkaracha

+0

Welcher Datentyp ist das Feld "bio"? – Webnet

0

Ich würde vorschlagen, Sie machen Bio Großbuchstaben und haben wie "% DIED%" stellen Sie auch sicher, dass death_date wirklich Null ist, siehe Wenn Sie in beiden Fällen unabhängig voneinander eine Antwort erhalten, welche Antwort erhalten Sie?

+0

Die Verwendung von WHERE death_date IS NULL selbst gibt die Personen zurück, deren death_date NULL ist. – kirkaracha

+0

worüber? WO OBEN (bio) WIE "% VERSTECKT%" –