Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL-Suche mit Berücksichtigung der Groß-/Kleinschreibung nach dem Feld utf8_bin

Ein String in MySQL hat einen Zeichensatz und eine Sortierung . Utf8 ist der Zeichensatz und utf8_bin ist eine seiner Sortierungen. Um Ihr String-Literal mit einer utf8-Spalte zu vergleichen, konvertieren Sie es in utf8, indem Sie ihm die _charset-Notation voranstellen:

_utf8 'Something'

Jetzt ist eine Sortierung nur für einige Zeichensätze gültig. Die Groß- und Kleinschreibung wird beachtet Die Sortierung für utf8 scheint utf8_bin zu sein, was Sie wie folgt angeben können:

_utf8 'Something' collate utf8_bin

Mit diesen Konvertierungen sollte die Abfrage funktionieren:

select * from page where pageTitle = _utf8 'Something' collate utf8_bin

Das Präfix _charset funktioniert mit Zeichenfolgenliteralen. Um den Zeichensatz eines Feldes zu ändern, gibt es CONVERT ... USING. Dies ist nützlich, wenn Sie das Feld pageTitle in einen anderen Zeichensatz konvertieren möchten, wie in:

select * from page 
where convert(pageTitle using latin1) collate latin1_general_cs = 'Something'

Um das Zeichen und die Sortierung für eine Spalte namens „col“ in einer Tabelle namens „TAB“ anzuzeigen, versuchen Sie Folgendes:

select distinct collation(col), charset(col) from TAB

Eine Liste aller Zeichensätze und Sortierungen finden Sie mit:

show character set
show collation

Und alle gültigen Sortierungen für utf8 finden Sie mit:

show collation where charset = 'utf8'