2011-03-17 14 views
6

tengo una tabla que utiliza un tipo de datos SET durante uno de los campos, y para comprobar si el campo contiene un elemento específico utilizoMySQL DONDE tipo de datos SET contiene artículo

SELECT * FROM table WHERE myset LIKE %value%; 

Esto funciona la mayoría de las veces, pero dos de los valores potenciales tienen la misma palabra, es decir, un elemento posible en el conjunto es Poodle y otro es Toy Poodle. Si hago

SELECT * FROM table WHERE myset LIKE %Poodle%; 

Devuelve todas las filas que tienen ya sea Poodle o Caniche Toy. Quiero que solo regrese si el campo contiene Poodle. Si elimino los comodines, solo devolverá las filas que solo tienen Poodle. Así que, básicamente, si la tabla fue:

id | myset 
------------------------- 
1 | "Poodle" 
2 | "Toy Poodle" 
3 | "Poodle","Toy Poodle" 
4 | "Toy Poodle","Poodle" 

Necesito una instrucción de selección que devolvería 1,3 y 4, pero no 2. ¿Es esto posible?

Respuesta

11

que tiene que hacer: SELECT * FROM table WHERE FIND_IN_SET('Poodle',myset)>0 como se describe en documentation

+0

No estoy seguro de cómo pasé por alto eso ... me siento un poco tonto ahora. Ahí fue donde obtuve la información para usar LIKE% ...%, de alguna manera me perdí la parte FIND_IN_SET – awestover89

+0

ahora lo sé. me alegro de agregar otro conjunto de conocimientos en mi base de datos de cerebros – reignsly

1
SELECT * FROM table WHERE FIND_IN_SET('"Poddle"', myset) > 0 

buscando " sería importante eliminar el registro # 2

0

lo siento si estoy completamente no viene al caso aquí, pero son el citas en su conjunto de resultados realmente almacenados en el DB?

lo que quiero decir es, ¿el valor real de la primera fila igual ...

"Poodle" 

... o ha acabamos de citar estos valores a efectos de presentación, en cuyo caso el primer valor haría realidad sea ​​...

Poodle 

la única razón por la que pregunto es, ¿por qué no hacer una consulta como ...

SELECT * FROM table WHERE myset LIKE '%"Poodle"%'; 

Ap ologías si he omitido el punto o simplificado demasiado más allá del punto de reconocimiento.

¡buena suerte con una solución de todos modos!

+1

no, las comillas no están almacenadas en la base de datos. Solo las estaba usando para su presentación en la pregunta para indicar que cada una era un valor posible diferente – awestover89

+0

. ser caniche, Toy Poodle – BizNuge

Cuestiones relacionadas