MySQL函数不适用于unicode字符串

时间:2013-11-22 19:00:46

标签: mysql unicode utf-8 triggers

我有一个MySQL函数,它在指定的字符串中进行一些字符串替换。我简单地使用了这个函数来返回它的论点。

CREATE FUNCTION replace_details(
    id INT UNSIGNED,
    message VARCHAR(1000))
    RETURNS VARCHAR(1000) LANGUAGE SQL
BEGIN
    RETURN message;
END;
;;

此函数从before insert触发器调用,因此插入的字符串被修改。当我使用英文文本时,一切都按预期工作,但是一旦我试图插入其他内容(例如俄语),它就会使我的字符串不可读。实际上我只在数据库中获得?个签名。如果我在触发器中使用任何其他功能,它可以正常工作

例如:

SET NEW.message = CONCAT(NEW.message, ' test');

但是一旦我使用我的自定义函数实际上什么也没做,但返回它得到的东西,插入的字符串变得不可读。 我想我需要以某种方式指定我的函数与unicode一起工作,但是如何?

MySQL server version: 5.7.1-m11

1 个答案:

答案 0 :(得分:1)

我找到了。

CREATE FUNCTION replace_details(
    id INT UNSIGNED,
    message VARCHAR(1000) CHARACTER SET UTF8)
    RETURNS VARCHAR(1000) CHARACTER SET UTF8 LANGUAGE SQL
BEGIN
    RETURN message;
END;
;;

作品!