Dies liegt an Bug 70767 auf LOCATE()
und INSTR()
, die verifiziert wurde.
Obwohl der INSTR()
Dokumentation besagt, dass es für Multi-Byte-Strings verwendet werden kann, es scheint, wie Sie bemerken, mit Sortierungen wie utf8_general_ci
nicht zu funktionieren , die Groß- und Kleinschreibung unempfindlich sein sollte
Der Fehlerbericht besagt, dass MySQL dies zwar korrekt macht, aber nur, wenn die Anzahl der Bytes ist auch identisch:
Um das Berichtsbeispiel zu verfälschen, erstellen Sie die folgende Tabelle:
create table t ( needle varchar(10), haystack varchar(10)
) COLLATE=utf8_general_ci;
insert into t values ("A", "a"), ("A", "XaX");
insert into t values ("A", "á"), ("A", "XáX");
insert into t values ("Á", "a"), ("Á", "XaX");
insert into t values ("Å", "á"), ("Å", "XáX");
Führen Sie dann diese Abfrage aus, Sie können das gleiche Verhalten demonstriert sehen:
select needle
, haystack
, needle=haystack as `=`
, haystack LIKE CONCAT('%',needle,'%') as `like`
, instr(needle, haystack) as `instr`
from t;