2016-12-12 1 views
0

Dies könnte eine ziemlich grundlegende Frage sein, aber ich hoffe, jemand wird Ihnen helfen können?Suche String in anderer Wortstellung in MySQL Abfrage

sagen Lets Ich habe eine MySQL-Tabelle mit einem Feld namens exampleString, die ein Textfeld

In einem Datensatz ist, enthält das Feld exampleString den folgenden Text:

"Äpfel Orangen Birnen"

nun, was ich tun möchte in der Lage sein (PHP) ist die folgende:

  1. eine Abfrage durchführen für „Äpfel Orangen Birnen“ suchen - was ich tun kann das, kein Problem.

  2. Führen Sie eine Abfrage, um nach "Orangen Äpfel Birnen" zu suchen, und es wird den Datensatz mit der Zeichenfolge "Äpfel Orangen Birnen" darin zurückgeben - ich bin mir nicht sicher, wie man das macht. (Hinweis: Wenn die Suchanfrage nur "Orangen Birnen" enthielt, sollte sie den Datensatz nicht zurückgeben).

ich auch die Abfrage Groß- und Kleinschreibung in der Lage sein möchte zu machen, und ich bin nicht sicher, wie das zu tun, entweder (obwohl ich das noch nicht durchsucht).

+0

Sie können 'AND' Abfrage in Schleife in PHP nicht verwenden? Beispiel: '$ string = 'Äpfel Orangen Birnen'; $ explode = explode ('', $ string); 'und die Schleife:' foreach ($ explode als $ value) {$ query. = 'AND dein_field LIKE "%' $ value '%"}; 'Ich kann antworten und erkläre, ob du es brauchst :) – Xenofexs

+0

Das ist nicht, was (mein) SQL großartig ist. Wenn Sie ein RDBMS dafür verwenden möchten, sollten Sie Ihre Daten normalisieren. Wenn Sie dies nicht beachten, sollten Sie sich FULLTEXT-Indizes ansehen. Andernfalls sollten Sie Code auf Anwendungsebene für diese Aufgabe verwenden (meine Präferenz). – Strawberry

+0

Vielen Dank für Ihre Antworten Leute - sehr geschätzt. Ich fand, dass SQL nicht großartig war, aber überprüfen wollte, und Sie haben es bestätigt :) –

Antwort

1

Sie können PHP for-Schleife für jedes Wort verwenden, das Sie in Ihrer Eingabe haben, und Ihre SQL-Abfrage machen.

In MySQL können Sie LIKE "%[your_string]%" verwenden für einen String Inhalt suchen [your_string] http://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html

Also, wenn Sie ‚Äpfel Orangen Birnen‘ müssen übereinstimmen und ‚Äpfel Birnen Orangen‘ Sie so etwas wie tun müssen:

LIKE "%apples%" AND LIKE "%oranges%" AND LIKE "%pears%" 

So finden Sie die Zeichenfolge Inhalt Äpfel und Orangen und Birnen ohne Auftrag Bedeutung

in pHP jetzt verwandeln the explode function einen String in Array

Also, Beispiel für endgültigen Code (adapt sauber und sicher dies für Sie Fall. Testen Sie Ihre Variablen etc)

$string = 'apples oranges pears'; 

$explode = explode(' ', $string); 

$whereString = ''; 
foreach ($explode as $key => $value) { 
    $whereString .= ' AND [your_field] LIKE "%'.$value.'%"'; 
} 

echo $whereString; 
+0

Viel approizierten Xenofexs - Ich dachte, ich müsste so etwas tun, aber, nicht ein MySQL-Experte, ich dachte, ich würde zu überprüfen sehen Sie, ob es in der Abfrage direkt gemacht werden könnte. –

+0

Es ist ein Vergnügen :). Können Sie überprüfen, ob das Problem behoben ist? – Xenofexs

Verwandte Themen