mysql存储函数返回值charset

时间:2015-01-13 14:40:05

标签: mysql character-encoding user-defined-functions

我有mysql用户定义的函数

DELIMITER $$ 
    CREATE FUNCTION `myfunc`(`str` TEXT) RETURNS TEXT CHARSET utf8
NO SQL
DETERMINISTIC
SQL SECURITY INVOKER
BEGIN

RETURN str;
END$$

DELIMITER ;

它只返回传递的参数而没有任何更改

我的问题是,如果我传递一些俄语或希腊字母,那么我只会回来??????作为回应

SELECT myfunc('ывфафывавы');

会回来     ??????????

如果我打电话的话     SELECT myfunc(' sdfasfsdf'); 我明白了     sdfasfsdf 结果

无法找到问题的位置,任何想法?

1 个答案:

答案 0 :(得分:2)

尝试使用CHARSET utf8声明参数,就像定义结果一样。

DELIMITER $$ 
CREATE FUNCTION `myfunc`(`str` TEXT CHARSET utf8) 
    RETURNS TEXT CHARSET utf8
    NO SQL
    DETERMINISTIC
    SQL SECURITY INVOKER
    BEGIN

        RETURN str;
    END$$

DELIMITER ;

如果没有,MySQL会将您的传入参数转换为默认字符集。