Methode: 1. Verwenden Sie „Tabellenname, wo Feld wie ‚% string%‘“ abfragen. 2. Verwenden Sie „Tabellenname, wo find_in_set (Zeichenfolge, Feld)“, um abzufragen. 3. Verwenden Sie „Tabellenname, wo suchen (Zeichenfolge). ,Feld)“-Abfrage.
Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.
Fassen Sie die drei Methoden zusammen, um festzustellen, ob eine bestimmte Zeichenfolge eine bestimmte Zeichenfolge in MySQL enthält.
Nehmen wir zunächst ein einfaches Szenario, z. B. das Abfragen der Benutzertabelle nach Datensätzen mit yanggb im Hobby.
Methode 1: Verwenden Sie das Platzhalterzeichen %.
Wildcard ist auch ein Fuzzy-Matching, das in führende Fuzzy-Abfragen, nachgestellte Fuzzy-Abfragen und insgesamt führende Matching-Abfragen unterteilt werden kann. Es eignet sich für das Szenario der Abfrage, ob eine bestimmte Zeichenfolge eine andere Fuzzy-Abfrage enthält. Das Verwendungsszenario von
select * from user where hobby like '%yanggb%';
beschränkt sich darauf, die Datensätze von Yanggb in Hobby zu finden (Hobby sind mehrere durch Kommas getrennte Werte), nicht jedoch umgekehrt.
Methode 2: Verwenden Sie die von MySQL bereitgestellte String-Funktion find_in_set().
MySQL bietet eine String-Funktion find_in_set(str1,str2), die verwendet wird, um den Positionsindex von str1 in str2 zurückzugeben. Wenn er gefunden wird, gibt er true (1) zurück, andernfalls gibt er false (0) zurück str2 muss durch Kommas halber Breite [,] getrennt sein.
select * from user where find_in_set('yanggb', hobby);
Wenn die passende Zeichenfolge als erster Parameter verwendet wird, besteht das anwendbare Szenario darin, die Datensätze von Yanggb in Hobby zu finden (Hobby besteht aus mehreren durch Kommas getrennten Werten).
select * from user where find_in_set(hobby, 'yanggb1,yanggb2,yanggb3');
Wenn die übereinstimmende Zeichenfolge als zweiter Parameter verwendet wird, besteht das anwendbare Szenario darin, Datensätze mit einem von yanggb1, yanggb2 und yanggb3 in hobby zu finden (hobby ist ein einzelner Wert).
Methode 3: Verwenden Sie die von MySQL bereitgestellte Zeichenfolgenfunktion „locate()“.
MySQL bietet auch eine Zeichenfolgenfunktion „locate(substr, str)“, mit der der Positionsindex von substr in str zurückgegeben wird. Wenn er gefunden wird, wird eine Zahl größer als 0 zurückgegeben, andernfalls wird 0 zurückgegeben.
select * from user where locate('yanggb', hobby) > 0;
Die anwendbaren Szenarien ähneln der Funktion find_in_set(). Der einzige Unterschied zwischen den beiden Funktionen ist der Rückgabewert.
Empfohlenes Lernen: MySQL-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo fragen Sie den enthaltenen String in MySQL ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!