Kombinieren von SQL-LIKE- und IN-Klauseln für einen verbesserten Mustervergleich
In SQL wird der LIKE-Operator häufig für den Mustervergleich verwendet, sodass Sie dies tun können Suchen Sie nach Zeilen, die teilweise mit einem angegebenen Muster übereinstimmen. Andererseits können Sie mit dem IN-Operator überprüfen, ob der Wert einer Spalte mit einem Element innerhalb einer vordefinierten Menge übereinstimmt. Bei der Kombination dieser beiden Operatoren können jedoch bestimmte Einschränkungen auftreten.
Stellen Sie sich das folgende Szenario vor:
Frage: Ist es möglich, LIKE und zu kombinieren? IN-Klauseln, um eine Spalte effizient mit einer Reihe verschiedener Zeichenfolgen in einer einzelnen Abfrage abzugleichen? Zum Beispiel:
SELECT * FROM tablename WHERE column IN ('M510%', 'M615%', 'M515%', 'M612%');Nach dem Login kopierenZiel: Erzielen Sie einen Mustervergleich mit mehreren LIKE-Ausdrücken, ohne auf eine Schleife über ein Array von Zeichenfolgen zurückgreifen zu müssen.
Lösung :
Während das LIKE IN-Konstrukt nicht explizit unterstützt wird, gibt es alternative Ansätze, um das gewünschte Ergebnis zu erzielen:
1. Verwenden von Substring und IN:
Sie können die Funktion substring() verwenden, um eine bestimmte Anzahl von Zeichen vom Anfang der Spalte zu extrahieren, und dann den IN-Operator verwenden, um zu prüfen, ob der extrahierte Substring mit einem beliebigen übereinstimmt der bereitgestellten Zeichenfolgen:
SELECT * FROM tablename WHERE substring(column,1,4) IN ('M510','M615','M515','M612')
In diesem Beispiel extrahiert die Funktion substring() die ersten vier Zeichen der Spalte und die IN-Klausel prüft, ob die extrahierte Teilzeichenfolge mit einer der vier angegebenen Zeichenfolgen übereinstimmt.
2. Verwendung von CASE und WHEN:
Ein anderer Ansatz besteht darin, die CASE- und WHEN-Anweisungen zu verwenden, um mehrere Bedingungen auszuwerten:
SELECT * FROM tablename WHERE CASE WHEN column LIKE 'M510%' THEN TRUE WHEN column LIKE 'M615%' THEN TRUE WHEN column LIKE 'M515%' THEN TRUE WHEN column LIKE 'M612%' THEN TRUE ELSE FALSE END;
Diese CASE-Anweisung wertet jede Bedingung nacheinander aus. Wenn eine der Bedingungen erfüllt ist, gibt die Abfrage die entsprechende Zeile zurück.
Mit diesen alternativen Ansätzen können Sie den Mustervergleich mit der Bequemlichkeit der IN-Klausel kombinieren und so effizientere und präzisere SQL-Abfragen ermöglichen.
Das obige ist der detaillierte Inhalt vonKönnen Sie die SQL-Operatoren LIKE und IN für einen effizienten Mustervergleich kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!