1

我需要在存储过程中的准备好的语句中指定与 LIKE 相关的 COLLATE,例如<col> LIKE ? COLLATE utf8_unicode_ci. 我收到以下错误:

COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'binary'

我也尝试通过 all of: 转换参数,LIKE _utf8 ? COLLATE utf8_unicode_ci但是错误类似于:LIKE CONVERT(? AS utf8) COLLATE utf8_unicode_ciLIKE 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 ...

任何提示将不胜感激。

4

1 回答 1

1

AFAIK,这_utf8string literals语法的一部分。因为你没有,所以你不能使用它。

签名CAST()是这样的:

CAST(expr AS type)

我想你真的想要CONVERT()

CONVERT(expr,type), CONVERT(expr USING transcoding_name)

[...]

CONVERT() with USING 在不同字符集之间转换数据。在 MySQL 中,转码名称与对应的字符集名称相同。例如,此语句将默认字符集中的字符串 'abc' 转换为 utf8 字符集中的对应字符串:

SELECT CONVERT('abc' USING utf8);
于 2016-03-01T12:53:24.660 回答