我需要在存储过程内的预准备语句中指定与LIKE相关的COLLATE,例如: <col> LIKE ? COLLATE utf8_unicode_ci
。我收到以下错误:
COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'binary'
我还尝试按以下所有方式强制转换参数:LIKE _utf8 ? COLLATE utf8_unicode_ci
,LIKE CONVERT(? AS utf8) COLLATE utf8_unicode_ci
和LIKE CAST(? AS varchar CHARACTER SET utf8) COLLATE utf8_unicode_ci
,但错误类似于:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar CHARACTER SET utf8) COLLATE utf8_unicode_ci ...
任何提示都将不胜感激。
答案 0 :(得分:0)
AFAIK,_utf8
是string literals语法的一部分。由于你没有,你不能使用它。
signature for CAST()
就是这样:
CAST(expr AS type)
CONVERT(expr,type), CONVERT(expr USING transcoding_name)
[...]
带有USING的CONVERT()在不同的字符集之间转换数据。 在MySQL中,转码名称与相应的名称相同 字符集名称。例如,此语句转换字符串 'abc'在默认字符集中为相应的字符串 utf8字符集:
SELECT CONVERT('abc' USING utf8);