2010-03-26 14 views
51

Tengo una tabla mysql que tiene una columna que almacena xml como una cadena. Necesito encontrar todas las tuplas donde la columna xml contiene una cadena dada de 6 caracteres. Nada más importa, todo lo que necesito saber es si esta cadena de 6 caracteres está allí o no.Buscar cadena dentro de la columna de texto en MySQL

Por lo tanto, probablemente no importe que el texto tenga el formato de xml.

Pregunta: ¿cómo puedo buscar en mysql? es decir SELECT * FROM items WHERE items.xml [contains the text '123456']

¿Hay alguna manera de que pueda usar el operador LIKE para hacer esto?

+0

Consulte esto: http://winashwin.wordpress.com/2012/08/28/mysql-search/ –

Respuesta

78

que probablemente se podría utilizar el LIKE clause hacer algunos simples coincidencia de cadenas:

SELECT * FROM items WHERE items.xml LIKE '%123456%' 

Si necesita una funcionalidad más avanzada, echar un vistazo a las funciones de texto completo-de búsqueda de MySQL aquí: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

+1

.. ¿cómo podría modificar esto para usarlo con una consulta de PHP? Tengo una cadena '$ message' y me gustaría seleccionar la fila con esa cadena exacta. Tengo 'SELECT * FROM Messages WHERE from_id = '$ fromID' AND to_id = '$ toID' Y mensaje LIKE '$ message'' pero no creo que funcione – Hristo

5
SELECT * FROM items WHERE `items.xml` LIKE '%123456%' 

El operador % en LIKE significa "cualquier cosa puede estar aquí".

2

decir:

SELECT * FROM items WHERE items.xml LIKE '%123456%' 
+5

¿Echas de menos un ME GUSTA? – alex

+0

Enviado una edición ... le faltaba COMO –

2

Por qué no usar, como?

SELECT * FROM items WHERE items.xml LIKE '%123456%' 
7

Usar como podría tomar más tiempo, así que use la búsqueda_texto_ completo

Select * from items where match(items.xml) against ('your_search_word') 
+8

¿Se ha demostrado que esto es más rápido que LIKE? –

Cuestiones relacionadas