我有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 结果无法找到问题的位置,任何想法?
答案 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会将您的传入参数转换为默认字符集。