


Sprechen Sie über das Problem der Einbindung von SQL-Abfragefeldern in Anweisungen
Aug 11, 2017 pm 03:08 PMApropos SQL-Fuzzy-Abfragen: Das erste, was mir in den Sinn kommt, sollte das Schlüsselwort „like“ sein. Wenn wir Daten abfragen müssen, die ein bestimmtes Feld enthalten, verwenden wir häufig die Abfragemethode „%keyword%“. Spezifische Codebeispiele finden Sie in diesem Artikel
Vorwort
Wenn es um Fuzzy-Abfragen in SQL geht, ist das Erste, was passiert mind sollte das Schlüsselwort like sein.
Wenn wir Daten abfragen müssen, die ein bestimmtes Feld enthalten, verwenden wir häufig die Abfragemethode „%keyword%“. Zum Beispiel:
1 |
|
Dies sollte als typische „enthält XXX“-Methode betrachtet werden, aber was ist, wenn wir Daten abfragen müssen, deren Felder in bestimmten Zeichen enthalten sind? ?
Zum Beispiel habe ich eine Kontaktdatentabelle ConnectName, die ein Feld zum Aufzeichnen von Namen enthält. Ich möchte die Kontaktinformationen der Personen Xiaolan und Haiyuan erhalten. Unter normalen Umständen fällt uns als Erstes Folgendes ein:
1 2 3 4 |
|
Dieser Ansatz kann diesen Zweck erreichen. Wenn ich zu diesem Zeitpunkt plötzlich eine andere Person überprüfen möchte, beispielsweise „Conan“, müssen wir die SQL-Struktur ändern und einen Where-Bedingungssatz hinzufügen:
1 2 3 4 5 |
|
Wir wissen, dass die OR-bedingte Abfrage selbst ineffizient ist und die Strukturänderungsanweisung in MyBatis etwas schwieriger zu implementieren ist (natürlich kann sie auch implementiert werden, indem man einfach die eingefügten Felder durchläuft).
Kann es einfacher sein? Kann ich alle Schlüsselwörter zusammenfassen und nur eine Where-Bedingung verwenden, um dies zu erreichen?
CHARINDEX erscheint
Zu diesem Zeitpunkt können wir das Schlüsselwort CHARINDEX verwenden, um ein bestimmtes Feld zurückzugeben, das in einer Textzeichenfolge erscheint Die Position ähnelt der Verwendung von Strings indexOf. Lassen Sie uns ohne weiteres eine Kastanie angeben:
1 |
|
In der Kastanie oben ist sie nicht enthalten, da Cao Cao ist ein sehr schönes Schlüsselwort, daher kann es nicht gefunden werden, und der Index der Zeichen wird 1 zurückgegeben.
Nachdem wir verstanden haben, wie es verwendet wird, können wir das Schlüsselwort CHARINDEX zur Optimierung verwenden unsere SQL-Anweisung:
1 |
|
Wenn der dem Namensfeld entsprechende Name in „Conan Xiaolan Haibara“ erscheint, dann gibt die CHARINDEX-Funktion einen Wert größer als 1 zurück, und wir können die Daten bekommen, die wir wollen (die drei können auch fröhlich zusammen spielen) ^-^)
Die entsprechende mybatis-Implementierung ist auch relativ einfach
1 2 3 |
|
Wenn wir später eine neue Person hinzufügen möchten, beispielsweise Mouri Kogoro, müssen Sie nur „Xiaolan Haibara Conan Mouri Kogoro“ zu den eingehenden Parametern hinzufügen.
Das obige ist der detaillierte Inhalt vonSprechen Sie über das Problem der Einbindung von SQL-Abfragefeldern in Anweisungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie kann man in PHP feststellen, ob ein Feld leer ist?

NoSuchFieldError in Java – Lösung für Feld nicht gefunden

So fügen Sie Felder zur Datenbanktabelle hinzu

Wie kann ich mithilfe von JavaScript feststellen, ob eine Zeichenfolge bestimmte Zeichen enthält?

Wie implementiert man die Anweisung zum Entsperren der Tabelle in MySQL?

Wie implementiert man die Anweisung zum Einfügen von Daten in MySQL?
