これは、LOCATE()
のINSTR()
、検証済みです。
INSTR()
>
ドキュメントには、マルチバイト文字列に使用できると記載されていますが、ご存知のように、utf8_general_ci
のような照合では機能しないようです。 、大文字と小文字およびアクセントに依存しない>
バグレポートによると、MySQLはこれを正しく実行しますが、バイトの数の場合にのみ実行します。 も同じです:
レポートの例を変えるには、次のテーブルを作成します。
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");
次に、このクエリを実行すると、同じ動作が示されていることがわかります。
select needle
, haystack
, needle=haystack as `=`
, haystack LIKE CONCAT('%',needle,'%') as `like`
, instr(needle, haystack) as `instr`
from t;