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?
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
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')
SELECT * FROM items WHERE `items.xml` LIKE '%123456%'
Le %
opérateur dans LIKE
signifie "tout peut être ici".
Pourquoi ne pas utiliser LIKE?
SELECT * FROM items WHERE items.xml LIKE '%123456%'
vous voulez dire:
SELECT * FROM items WHERE items.xml LIKE '%123456%'
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);