2010-11-19 23 views
6

Tengo una tabla de datos biográficos, y necesito hacer una consulta que seleccione personas que tienen la palabra "murieron" en su biografía y cuya fecha de muerte es NULL. Esto no funciona:MySQL Select con LIKE y DONDE

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

que selecciona todos aquellos cuyo death_date es nulo, pero también selecciona las personas que no tienen la palabra "muerto" en su biografía. ¿Puedo hacer esto en una consulta?

+2

¿Estás seguro de que devuelve a las personas que no han "muerto" en su biografía? Recuerde que también incluirá palabras que contengan muertes tales como las estudiadas e inmiscuidas. – Kibbee

Respuesta

5

Podría ser una palabra como 'completelydied' y todavía van a ser seleccionado. Compruebe cuidadosamente si La frase "murió" no existe como parte de alguna palabra en los registros que seleccionó.

+0

Agregar un espacio antes de "morir" parece funcionar, gracias. – kirkaracha

+1

No olvide que agregar espacio delante de 'muerto' no funcionará si la palabra está en el comienzo de la biografía. –

3

Tal vez el problema es que las cotizaciones, el uso "en lugar de" envolver la cláusula LIKE.

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

Al ejecutar la consulta de esta manera se obtienen los mismos resultados. – kirkaracha

+0

¿Qué tipo de datos es el campo "bio"? – Webnet

0

sugeriría que haga una mayúscula y diga "% DIED%" también asegúrese de que fecha_muerte es realmente nula, vea si recibe una respuesta de ambos casos en donde los casos son independientes. ¿Qué respuesta está obteniendo?

+0

Usar WHERE fecha_muerte es NULL por sí mismo devuelve las personas cuya fecha_muerte es NULL. – kirkaracha

+0

¿qué tal? DONDE UPPER (bio) LIKE '% DIED%' –