Function 出错,但是Query测试的时候没问题,设置成function就出错(繁体转简体)

OnlineLearner 2017-11-13 05:07:20
我参考了SQL 繁体转简体的Script,于是尝试写在Mysql,但是都一直出错。
请高手帮忙。


DROP TABLE IF EXISTS `codetable`;
CREATE TABLE `codetable` (
`id` int(11) DEFAULT NULL,
`gb` varchar(1) DEFAULT NULL,
`big` varchar(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf16;

-- ----------------------------
-- Records of codetable
-- ----------------------------
INSERT INTO `codetable` VALUES ('1', '万', '萬');

这个是function

BEGIN
SELECT Replace(__str, big, gb) INTO __str
FROM codetable
WHERE locate(big, __str) > 0;

RETURN __str ;
END

Parameter __str varchar(200) charset utf16




[SQL]select a('萬')
[Err] 1366 - Incorrect string value: '\x4E\x07' for column 'a('萬')' at row 1


这个是出错的信息。
请求好心人帮忙,谢谢
...全文
152 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2017-11-14
  • 打赏
  • 举报
回复
你的函数的返回值没有定义对吧? \x4E\x07'  这个是 utf16 ,与你的表和函数的入参是匹配的, 而你字符集是 utf8 的,估计是 RETURNS 定义没有指定 CHARSET utf16 导致系统直接把 utf16 的编码当 utf8 了
OnlineLearner 2017-11-14
  • 打赏
  • 举报
回复
引用 4 楼 zjcxc 的回复:
你的函数的返回值没有定义对吧? \x4E\x07'  这个是 utf16 ,与你的表和函数的入参是匹配的, 而你字符集是 utf8 的,估计是 RETURNS 定义没有指定 CHARSET utf16 导致系统直接把 utf16 的编码当 utf8 了
您好,這個確實是問題所在,已經解決了,非常感謝!
OnlineLearner 2017-11-13
  • 打赏
  • 举报
回复
引用 1 楼 zjcxc 的回复:
看看你的字符集相关的设置 show variables like 'char%'
请问是我的设置出错了吗?谢谢
OnlineLearner 2017-11-13
  • 打赏
  • 举报
回复
引用 1 楼 zjcxc 的回复:
看看你的字符集相关的设置 show variables like 'char%'
你好,下面是Result character_set_client utf8 character_set_connection utf8 character_set_database latin1 character_set_filesystem binary character_set_results utf8 character_set_server latin1 character_set_system utf8 character_sets_dir c:\wamp64\bin\mysql\mysql5.7.14\share\charsets\
zjcxc 2017-11-13
  • 打赏
  • 举报
回复
看看你的字符集相关的设置 show variables like 'char%'

56,820

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧