Grundlegende Verwendung der Funktion find_in_set in MySQL

Grundlegende Verwendung der Funktion find_in_set in MySQL

Vorwort

Dies ist eine neue Funktion, die ich kürzlich entdeckt habe.

Mein Einsatzszenario im Projekt sieht wie folgt aus:

Es gibt eine Anwendungstyptabelle, die die Felder parentId und parentIds enthält. Ersteres ist die übergeordnete ID, letzteres die übergeordnete ID auf mehreren Ebenen. Beide sind in der Datenbank vom Typ varchar. parentIds besteht aus mehreren übergeordneten IDs und ist durch "" getrennt.

Der Teamleiter teilte mir mit, dass ich diese Funktion nutzen könne, also informierte ich mich darüber und nutzte sie.

Grammatik

FIND_IN_SET(Zeichenfolge,Zeichenfolgeliste)

Definition

  1. Wenn sich der String str in der Stringliste strlist befindet, die aus mehreren Teilstrings besteht, liegt der Rückgabewert zwischen 1 und N.
  2. Eine Zeichenfolgenliste ist eine Zeichenfolge, die aus einer Reihe von Selbstlinks besteht, die durch die Zeichen „,“ getrennt sind.
  3. Wenn das erste Argument eine konstante Zeichenfolge und das zweite eine typeSET-Spalte ist, wird die Funktion FIND_IN_SET() für die Verwendung bitweiser Arithmetik optimiert.
  4. Wenn str nicht in strlist enthalten ist oder strlist eine leere Zeichenfolge ist, ist der Rückgabewert 0.
  5. Wenn ein beliebiger Parameter NULL ist, ist der Rückgabewert NULL. Diese Funktion funktioniert nicht richtig, wenn das erste Argument ein Komma (',') enthält.

strlist: Eine durch Kommas verbundene Zeichenfolge, z. B. „a,b,c,d“. Die Zeichenfolge ähnelt dem durch Kommas verbundenen Wert vom Typ SET.

Beispiel: SELECT FIND_IN_SET('b','a,b,c,d'); //Der Rückgabewert ist 2, also der zweite Wert

Beispiel

In der Artikeltabelle gibt es ein Typfeld, in dem der Artikeltyp gespeichert wird, darunter 1 Überschrift, 2 Empfehlung, 3 Hotspot, 4 Bild und Text usw.
Jetzt gibt es einen Artikel, der sowohl eine Überschrift, ein aktuelles Thema als auch ein Bild und Text enthält und im Format 1,3,4 in der Schrift gespeichert ist. Wie verwenden wir also SQL, um alle Artikel vom Typ 4 zu finden, die Bilder und Texte enthalten?

Hier kommt find_in_set ins Spiel. Nachfolgend der zitierte Inhalt:

Wählen Sie * aus dem Artikel, wobei FIND_IN_SET('4',Typ)

Der Unterschied zwischen find_in_set() und in:

Erstellen Sie eine Testtabelle, um den Unterschied zwischen den beiden zu veranschaulichen

Tabelle „tb_test“ erstellen (
 `id` int(8) NICHT NULL auto_increment,
 `name` varchar(255) NICHT NULL,
 `Liste` varchar(255) NICHT NULL,
 PRIMÄRSCHLÜSSEL (`id`)
);
INSERT INTO `tb_test` VALUES (1, 'Name', 'daodao, xiaohu, xiaoqin');
INSERT INTO `tb_test` VALUES (2, 'name2', 'xiaohu, daodao, xiaoqin');
INSERT INTO `tb_test` VALUES (3, 'name3', 'xiaoqin, daodao, xiaohu');

Ich dachte ursprünglich, dass MySQL eine solche Abfrage durchführen könnte:

SELECT id,name,liste aus tb_test WHERE 'daodao' IN(liste); -- (I)

Tatsächlich funktioniert das nicht. Die Abfrage ist nur gültig, wenn der Wert des Listenfelds gleich 'daodao' ist (also vollständig mit dem String vor IN übereinstimmt), sonst werden keine Ergebnisse erhalten, selbst wenn 'daodao' tatsächlich in der Liste steht.

Schauen wir uns das an:

Wählen Sie ID, Name, Liste aus tb_test aus, wobei 'daodao' in ('libk', 'zyfon', 'daodao') angegeben ist. -- (II)

Das ist in Ordnung.

Was ist der Unterschied zwischen diesen beiden? Warum der erste nicht das richtige Ergebnis erzielen kann, der zweite jedoch schon. Der Grund dafür ist, dass (Liste) Liste in (1) eine Variable ist, während ('libk', 'zyfon', 'daodao') in (2) Konstanten sind.

Wenn Sie also möchten, dass (1) korrekt funktioniert, müssen Sie verwenden

finden_in_set():

SELECT id,name,list from tb_test WHERE FIND_IN_SET('daodao',list); – Verbesserte Version von (I) 

Zusammenfassen

Dies ist das Ende dieses Artikels über die grundlegende Verwendung der Funktion find_in_set in MySQL. Weitere Informationen zur Verwendung der MySQL-Funktion find_in_set finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung zur Verwendung der Funktionen find_in_set() und in() in MySQL
  • So verwenden Sie die MySQL FIND_IN_SET-Funktion
  • Detaillierte Erläuterung der Verwendung der integrierten Funktion „locate instr position find_in_set“ in der effizienten Fuzzy-Suche von MySQL
  • Detaillierte Erklärung zur Verwendung der Funktion find_in_set() in MySQL
  • MySQL verwendet die Funktion find_in_set(), um die Sortierung in der Reihenfolge where in() zu implementieren.

<<:  So installieren und konfigurieren Sie den Supervisor-Daemon unter CentOS7

>>:  Vue.js verwendet Element-ui, um das Navigationsmenü zu implementieren

Artikel empfehlen

Windows 2019 Aktivierungs-Tutorial (Office2019)

Vor ein paar Tagen habe ich erfahren, dass die of...

Beispiel für die Verwendung der setInterval-Funktion in React

Dieser Artikel basiert auf der Windows 10-Systemu...

So überwachen Sie Oracle-Datenbanken mit Zabbix Agent2

Überblick In Zabbix Version 5.0 und höher wurde e...

Vue-Überwachungseigenschaften und berechnete Eigenschaften

Inhaltsverzeichnis 1. Überwachungseigenschaften a...

Grafisches Tutorial zur Installation und Konfiguration der MySQL-Version 5.7.15

Dieser Artikel enthält ein ausführliches Tutorial...

Grundlegende Konzepte und allgemeine Methoden des Map-Mappings in ECMAScript6

Inhaltsverzeichnis Was ist eine Zuordnung? Unters...

Zusammenfassung gängiger Fehler beim Entwurf von MySQL-Tabellen

Inhaltsverzeichnis Fehler 1: Zu viele Datenspalte...

Chrome 4.0 unterstützt GreaseMonkey-Skripte

GreaseMokey (die Chinesen nennen es Grease Monkey...

Vue implementiert das Hoch- und Herunterladen von Dateien

In diesem Artikelbeispiel wird der spezifische Co...

Axios Sekundärkapselungsbeispiel Demo im Projekt

1. Warum verpacken? Erleichtert das Aufrufen von ...

Probleme und Vorsichtsmaßnahmen beim Festlegen von maxPostSize für Tomcat

1. Warum maxPostSize festlegen? Der Tomcat-Contai...

20 Wegweiser auf dem Weg zum exzellenten UI (User Interface)-Designer

Einleitung: Der Interface-Designer Joshua Porter h...

Dynamischer Sternenhimmel Hintergrund umgesetzt mit CSS3

Ergebnis:Implementierungscode html <link href=...