如何在MySQL编写的语句

时间:2016-03-01 12:39:08

标签: mysql stored-procedures prepared-statement collate

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

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

我还尝试按以下所有方式强制转换参数:LIKE _utf8 ? COLLATE utf8_unicode_ciLIKE 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 ...

任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:0)

AFAIK,_utf8string literals语法的一部分。由于你没有,你不能使用它。

signature for CAST()就是这样:

  

CAST(expr AS type)

我认为you really want CONVERT()

  

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

     

[...]

     带有USING的

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

SELECT CONVERT('abc' USING utf8);