web-dev-qa-db-fra.com

Rechercher une chaîne dans la colonne de texte dans MySQL

J'ai la table mysql qui a une colonne qui stocke XML en tant que chaîne. J'ai besoin de trouver tous les nuplets où la colonne xml contient une chaîne donnée de 6 caractères. Rien d'autre ne compte - tout ce que j'ai à savoir, c'est si cette chaîne de 6 caractères est là ou non.

Donc, peu importe que le texte soit au format XML.

Question: comment puis-je chercher dans mysql? c'est à dire SELECT * FROM items WHERE items.xml [contains the text '123456']

Est-il possible d'utiliser l'opérateur LIKE pour le faire?

60
user94154

Vous pourriez probablement utiliser la clause LIKE pour faire une simple correspondance de chaîne:

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

Si vous avez besoin de fonctionnalités plus avancées, jetez un œil aux fonctions de recherche en texte intégral de MySQL ici: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search .html

97
Mike Cialowicz

L'utilisation de "like" peut prendre plus de temps, alors utilisez full_text_search:

SELECT * FROM items WHERE MATCH(items.xml) AGAINST ('your_search_Word')
10
Raj
SELECT * FROM items WHERE `items.xml` LIKE '%123456%'

Le % opérateur dans LIKE signifie "tout peut être ici".

6
Amy B

Pourquoi ne pas utiliser LIKE?

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

vous voulez dire:

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

Lorsque vous utilisez la ligne de préparation wordpress, les solutions ci-dessus ne fonctionnent pas. Voici la solution que j'ai utilisée:

   $Table_Name    = $wpdb->prefix.'tablename';
   $SearchField = '%'. $YourVariable . '%';   
   $sql_query     = $wpdb->prepare("SELECT * FROM $Table_Name WHERE ColumnName LIKE %s", $SearchField) ;
 $rows = $wpdb->get_results($sql_query, ARRAY_A);
0
Debbie Kurth