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


这个是出错的信息。
请求好心人帮忙,谢谢
...全文
118 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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%'
  • 打赏
  • 举报
回复
相关推荐
发帖
MySQL
加入

5.5w+

社区成员

MySQL相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2017-11-13 05:07
社区公告
暂无公告