mysql 存储函数 return 值字符集
mysql stored function return value charset
我有 mysql 用户定义函数
DELIMITER $$
CREATE FUNCTION `myfunc`(`str` TEXT) RETURNS TEXT CHARSET utf8
NO SQL
DETERMINISTIC
SQL SECURITY INVOKER
BEGIN
RETURN str;
END$$
DELIMITER ;
它只是 returns 传回参数,没有任何改变
我的问题是,如果我传递一些俄语或希腊语字母,那么我只能返回 ??????作为回应
SELECT myfunc('ывфафывавы');
将return
????????????
如果我打电话
SELECT myfunc('sdfasfsdf');
我得到
sdfasfsdf
结果
找不到问题所在,有什么想法吗?
尝试使用 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 会将您的传入参数转换为默认字符集。
我有 mysql 用户定义函数
DELIMITER $$
CREATE FUNCTION `myfunc`(`str` TEXT) RETURNS TEXT CHARSET utf8
NO SQL
DETERMINISTIC
SQL SECURITY INVOKER
BEGIN
RETURN str;
END$$
DELIMITER ;
它只是 returns 传回参数,没有任何改变
我的问题是,如果我传递一些俄语或希腊语字母,那么我只能返回 ??????作为回应
SELECT myfunc('ывфафывавы');
将return ????????????
如果我打电话 SELECT myfunc('sdfasfsdf'); 我得到 sdfasfsdf 结果
找不到问题所在,有什么想法吗?
尝试使用 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 会将您的传入参数转换为默认字符集。