Ich habe MySQL-Tabelle, die eine Spalte hat, die XML als Zeichenfolge speichert. Ich muss alle Tupel finden, in denen die XML-Spalte eine bestimmte Zeichenfolge von 6 Zeichen enthält. Nichts anderes ist von Bedeutung - ich muss nur wissen, ob diese 6-stellige Zeichenfolge vorhanden ist oder nicht.
Es spielt also wahrscheinlich keine Rolle, dass der Text als XML formatiert ist.
Frage: Wie kann ich in MySQL suchen? dh SELECT * FROM items WHERE items.xml [contains the text '123456']
Gibt es eine Möglichkeit, den LIKE-Operator zu verwenden, um dies zu tun?
Sie könnten wahrscheinlich die LIKE
-Klausel verwenden, um einen einfachen String-Abgleich durchzuführen:
SELECT * FROM items WHERE items.xml LIKE '%123456%'
Wenn Sie erweiterte Funktionen benötigen, sehen Sie sich hier die Volltextsuchfunktionen von MySQL an: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search .html
Die Verwendung von like kann länger dauern. Verwenden Sie also full_text_search:
SELECT * FROM items WHERE MATCH(items.xml) AGAINST ('your_search_Word')
SELECT * FROM items WHERE `items.xml` LIKE '%123456%'
Das %
Operator in LIKE
bedeutet "alles kann hier sein".
Warum nicht LIKE benutzen?
SELECT * FROM items WHERE items.xml LIKE '%123456%'
was meinen Sie:
SELECT * FROM items WHERE items.xml LIKE '%123456%'
Wenn Sie die wordpress prepare-Zeile verwenden, funktionieren die obigen Lösungen nicht. Dies ist die von mir verwendete Lösung:
$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);