VorwortVor kurzem war ich damit beschäftigt, ein kleines persönliches Blog-Projekt zu schreiben. Beim Implementieren der Funktion „Globale Suche“ habe ich festgestellt, dass MySQL-Fuzzy-Abfrageanweisungen ein wenig magisch sind (ich bin gerade erst in die Programmierphase eingestiegen, also bringe ich Sie vielleicht zum Lachen, hahaha). Manchmal unterscheiden MySQL-Fuzzy-Abfrageanweisungen zwischen Groß- und Kleinschreibung , und manchmal unterscheiden MySQL-Abfrageanweisungen nicht zwischen Groß- und Kleinschreibung . Ich habe also viele Experimente durchgeführt und bin zu den folgenden Schlussfolgerungen gekommen (es können einige Fehler enthalten sein, ich bin herzlich eingeladen, auf meine Mängel hinzuweisen, und ich bin herzlich eingeladen, mit Freunden über das Problem zu diskutieren!) Lassen Sie uns zunächst COLLATE vorstellen. COLLATE bezieht sich normalerweise auf die Datencodierung (CHARSET). Im Allgemeinen unterstützt jedes CHARSET mehrere COLLATEs und jedes CHARSET gibt ein COLLATE als Standardwert an. Beispielsweise lautet das Standard-COLLATE für die Kodierung Latin1 „latin1_swedish_ci“ , das Standard-COLLATE für die Kodierung GBK „ gbk_chinese_ci “ und das Standard-COLLATE für die Kodierung UTF8MB4 „ utf8mb4_general_ci“ :
Interessierte Freunde können es selbst in Datenbankvisualisierungstools wie Navicate ausprobieren: Hinweis : In MySQL gibt es zwei Kodierungen: utf8 und utf8mb4 . Allerdings unterstützt utf8 in MySQL nur Zeichenkodierungen mit einer Länge von bis zu 3 Bytes. Daher wird empfohlen, das Kodierungsformat utf8mb4 zu wählen. Lösung 1Wie in der Abbildung gezeigt, habe ich hier zwei identische Datenbanken eingerichtet, um die Unterscheidung zu erleichtern und Freunden ein besseres Verständnis zu ermöglichen. Eine davon verwendet das UTF-8- Kodierungsformat und die andere das UTF-8MB4 -Format: Groß-/Kleinschreibung beachten Die Anweisung zur Tabellenerstellung verwendet auch das UTF-8- Kodierungsformat: Anweisung „Tabelle erstellen“ blog_test: UTF-8-Kodierungsformat Namen festlegen utf8; Setzen Sie FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Tabellenstruktur für t_blog -- ---------------------------- Tabelle löschen, wenn `t_blog` vorhanden ist; CREATE TABLE `t_blog` ( `id` bigint(20) NICHT NULL AUTO_INCREMENT, `Wertschätzung` bit(1) NICHT NULL, `comment_tabled` bit(1) NICHT NULL, `Inhalt` Langtext Zeichensatz utf8 COLLATE utf8_bin NULL, `create_time` datetime(0) NULL DEFAULT NULL, `first_picture` varchar(255) ZEICHENSATZ utf8 SORTIMENT utf8_bin NULL STANDARD NULL, `flag` varchar(255) ZEICHENSATZ utf8 SORTIMENT utf8_bin NULL STANDARD NULL, `veröffentlicht` bit(1) NICHT NULL, `empfehlen` bit(1) NICHT NULL, `share_statement` bit(1) NICHT NULL, `title` varchar(255) ZEICHENSATZ utf8 SORTIMENT utf8_bin NULL STANDARD NULL, `update_time` datetime(0) NULL DEFAULT NULL, `Ansichten` int(11) NULL DEFAULT NULL, `type_id` bigint(20) NULL DEFAULT NULL, `Benutzer-ID` bigint(20) NULL DEFAULT NULL, `Beschreibung` varchar (255) Zeichensatz utf8 COLLATE utf8_bin NULL DEFAULT NULL, PRIMÄRSCHLÜSSEL (`id`) MIT BTREE, INDEX `FK292449gwg5yf7ocdlmswv9w4j`(`Typ-ID`) mit BTREE, INDEX `FK8ky5rrsxh01nkhctmo7d48p82`(`Benutzer-ID`) USING BTREE, CONSTRAINT `FK292449gwg5yf7ocdlmswv9w4j` FOREIGN KEY (`type_id`) REFERENZEN `t_type` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `FK8ky5rrsxh01nkhctmo7d48p82` FOREIGN KEY (`user_id`) REFERENZEN `t_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamisch; Datenbankinhalte Abfrageergebnisse wählen Sie * aus Wählen Sie * aus abschließend: MySQL verwendet das UTF-8-Kodierungsformat und bei Fuzzy-Abfragen wird zwischen Groß- und Kleinschreibung unterschieden. Groß-/Kleinschreibung wird nicht beachtet. Anweisung „Tabelle erstellen“ Die Anweisung zur Tabellenerstellung verwendet auch das UTF-8-MB4 -Kodierungsformat: blog_test2: utf8mb4-Kodierungsformat Namen festlegen utf8mb4; Setzen Sie FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Tabellenstruktur für t_blog -- ---------------------------- Tabelle löschen, wenn `t_blog` vorhanden ist; CREATE TABLE `t_blog` ( `id` bigint(20) NICHT NULL AUTO_INCREMENT, `Wertschätzung` bit(1) NICHT NULL, `comment_tabled` bit(1) NICHT NULL, `Inhalt` Langtext Zeichensatz utf8mb4 COLLATE utf8mb4_general_ci NULL, `create_time` datetime(0) NULL DEFAULT NULL, `first_picture` varchar(255) ZEICHENSATZ utf8mb4 SORTIMENT utf8mb4_general_ci NULL STANDARD NULL, `flag` varchar(255) ZEICHENSATZ utf8mb4 SORTIMENT utf8mb4_general_ci NULL STANDARD NULL, `veröffentlicht` bit(1) NICHT NULL, `empfehlen` bit(1) NICHT NULL, `share_statement` bit(1) NICHT NULL, `title` varchar(255) ZEICHENSATZ utf8mb4 SORTIMENT utf8mb4_general_ci NULL STANDARD NULL, `update_time` datetime(0) NULL DEFAULT NULL, `Ansichten` int(11) NULL DEFAULT NULL, `type_id` bigint(20) NULL DEFAULT NULL, `Benutzer-ID` bigint(20) NULL DEFAULT NULL, `Beschreibung` varchar (255) Zeichensatz utf8mb4 Sortiert utf8mb4_general_ci NULL Standard NULL, PRIMÄRSCHLÜSSEL (`id`) MIT BTREE, INDEX `FK292449gwg5yf7ocdlmswv9w4j`(`Typ-ID`) mit BTREE, INDEX `FK8ky5rrsxh01nkhctmo7d48p82`(`Benutzer-ID`) USING BTREE, CONSTRAINT `FK292449gwg5yf7ocdlmswv9w4j` FOREIGN KEY (`type_id`) REFERENZEN `t_type` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `FK8ky5rrsxh01nkhctmo7d48p82` FOREIGN KEY (`user_id`) REFERENZEN `t_user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamisch; Datenbankinhalte Abfrageergebnisse wählen Sie * aus
* von abschließend MySQL verwendet das utf8mb4-Kodierungsformat und Fuzzy-Abfragen berücksichtigen keine Groß- und Kleinschreibung. Lösung 2Groß-/Kleinschreibung beachten Verfahren Geben Sie die erforderlichen Felder einzeln an (das Feld, bei dem hier zwischen Groß- und Kleinschreibung unterschieden werden muss, ist beispielsweise das Feld „Titel“ in der Tabelle „t_blog“) und verwenden Sie das Kodierungsformat „utf8“, und COLLATE verwenden Sie es als „utf8_bin“. Tabelle ändern t_blog ÄNDERN `Titel` `Titel` varchar(255) ZEICHENSATZ utf8 SORTIMENT utf8_bin NULL STANDARD NULL; abschließend Wählen Sie * aus Wählen Sie * aus Aus den obigen Ausführungsergebnissen können wir ersehen, dass diese Methode die Groß-/Kleinschreibung der Fuzzy-Abfrageanweisung berücksichtigen kann. Groß-/Kleinschreibung wird nicht beachtet. Verfahren Geben Sie die erforderlichen Felder einzeln an (das Feld, bei dem hier beispielsweise die Groß-/Kleinschreibung ignoriert werden muss, ist das Feld „Titel“ in der Tabelle „t_blog“) und verwenden Sie das Kodierungsformat „utf8mb4“, und COLLATE ist „utf8mb4_bin“: Tabelle ändern t_blog ÄNDERN `Titel` `Titel` varchar(255) ZEICHENSATZ utf8mb4 SORTIMENT utf8mb4_bin NULL STANDARD NULL; Fazit: Wählen Sie * aus Wählen Sie * aus Aus den obigen Ausführungsergebnissen können wir ersehen, dass diese Methode die Groß-/Kleinschreibung der Fuzzy-Abfrageanweisung ignorieren kann. Lösung 3Groß-/Kleinschreibung beachten Verfahren Wie in der Abbildung gezeigt, lautet das COLLATE des Felds „title“ der aktuellen Tabelle „t_blog“ „utf8mb4_general_ci“, wobei die Groß-/Kleinschreibung nicht beachtet wird. Ändern Sie das Feld in BINARY: Tabelle ändern t_blog CHANGE `title` `title` varchar(255) BINARY NULL DEFAULT NULL; Tabelle „t_blog“ ändern, Spalte „Titel“ ändern, varchar (255) BINARY NULL DEFAULT NULL; Wählen Sie eine der beiden Änderungsmethoden. abschließend Wählen Sie * aus Wählen Sie * aus Aus den obigen Ausführungsergebnissen können wir ersehen, dass die Änderung des Felds in BINARY dazu führen kann, dass die Fuzzy-Abfrageanweisung zwischen Groß- und Kleinschreibung unterscheidet . Lösung 4Groß-/Kleinschreibung beachten Verfahren Wie in der Abbildung gezeigt, lautet das COLLATE des Felds „title“ der aktuellen Tabelle „t_blog“ „utf8mb4_general_ci“, wobei die Groß-/Kleinschreibung nicht beachtet wird. Fügen Sie vor dem Abfrageanweisungsfeld BINARY hinzu: Wählen Sie * aus „t_blog“, wobei „Titel“ BINARY ist und „%html%“ lautet. abschließend Wählen Sie * aus Wählen Sie * aus Aus den obigen Ausführungsergebnissen können wir erkennen, dass das Hinzufügen von BINARY vor dem Abfrageanweisungsfeld dazu führen kann, dass die Fuzzy-Abfrageanweisung zwischen Groß- und Kleinschreibung unterscheidet . Lösung 5(Es wird insbesondere nicht empfohlen, versuchen Sie, es nicht zu verwenden) Suchen Sie die Datei my.ini unter der entsprechenden MySQL-Version, die für diesen Neuling der Version 8.0.17 entspricht.
Kleinbuchstabentabellennamen = 1 Hinweis: 0: Groß-/Kleinschreibung beachten, 1: Groß-/Kleinschreibung nicht beachten Starten Sie MySQL neu An vielen Stellen habe ich noch nicht alles genau erklärt, deshalb möchte ich die Experten um Rat fragen! Wenn Sie mehr erfahren möchten, können Sie sich auf den Blog des Chefs (Anbetung) beziehen. MySQL unterscheidet zwischen Groß- und Kleinschreibung. ZusammenfassenDies ist das Ende dieses Artikels darüber, ob MySQL-Fuzzy-Abfragen zwischen Groß- und Kleinschreibung unterscheiden. Weitere Informationen zur Groß- und Kleinschreibung von MySQL-Fuzzy-Abfragen finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Analyse des Linux-Hochleistungsnetzwerk-IO- und Reaktormodells
>>: Analyse des Ereignisschleifenmechanismus von JavaScript
Lassen Sie uns zunächst darüber sprechen, warum w...
1 Einleitung Apache Storm ist ein kostenloses, Op...
1. Einleitung: Da mein Freund einige Systemkenntn...
Ein Wort vorab: Plötzlich erhielt ich die Aufgabe...
Vorwort Dieser Artikel stellt hauptsächlich den r...
Wenn Sie MySQL zum ersten Mal lernen, verstehen S...
Die erste Methode: Verwenden Sie Junges Ein-Klick...
Inhaltsverzeichnis Einführung Frage Design 1: Adj...
I. Überblick Beim Schreiben von HTML-Vorlagen wer...
IIS7 muss bestätigen, ob das pseudostatische Modu...
<br />„Es gibt keine hässlichen Frauen auf d...
Die Protokolle in MySQL umfassen: Fehlerprotokoll...
Inhaltsverzeichnis Installieren Sie Mockjs in Ihr...
Konfigurationsschritte 1. Überprüfen Sie, ob DNS ...
VMware-Version: VMware-Workstation-Full-16 VMware...