webentwicklung-frage-antwort-db.com.de

Suchen Sie in MySQL nach einer Zeichenfolge in einer Textspalte

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?

60
user94154

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

97
Mike Cialowicz

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')
10
Raj
SELECT * FROM items WHERE `items.xml` LIKE '%123456%'

Das % Operator in LIKE bedeutet "alles kann hier sein".

6
Amy B

Warum nicht LIKE benutzen?

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

was meinen Sie:

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

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);
0
Debbie Kurth