求 MSSQL function 转 MYSQL function

OnlineLearner 2017-10-13 12:39:55
下面的function是获取中文字符串,因为我们的数据可能有日文和韩文,所以我们扫描字符串,只是获取中文字符串。
但是突然从MSSQL 转MYSQL,一时间没办法解决这个问题,请求好心人帮忙,谢谢!!


CREATE FUNCTION [dbo].[Charrep](@str NVARCHAR(200))
returns NVARCHAR(200)
AS
BEGIN
DECLARE @i INT,
@char NVARCHAR(1),
@zh NVARCHAR(200)

SET @i = 1
SET @zh = ''

WHILE @i <= Len(@str)
BEGIN
SET @char = Substring(@str, @i, 1)

IF Unicode(@char) BETWEEN 19968 AND 40869
BEGIN
SET @zh = @zh + @char
SET @i = @i + 1
END
ELSE
BEGIN
SET @zh = @zh + @char
SET @i = @i + 1
END
END

RETURN @zh
END

go
...全文
137 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
OnlineLearner 2017-10-18
  • 打赏
  • 举报
回复
引用 1 楼 zjcxc 的回复:
create function Charrep( __str varchar(200) charset utf16)
returns varchar(200)
begin
	declare _zh varchar(200) charset utf16 default '';
	declare _unzh varchar(200) charset utf16 default '';
	declare _i int default 0;
	declare _ch varchar(1) charset utf16;
	while _i < char_length(__str) do
		set _i:=_i+1, _ch:=mid(__str, _i, 1);
		if ord(_ch) between 19968 and 40869 then
			set _zh := concat(_zh, _ch);
		else
			set _unzh := concat(_unzh, _ch);
		end if;
	end while;
	return _zh;
end;
感谢大神的帮忙,完全符合要求。谢谢!!!
zjcxc 2017-10-16
  • 打赏
  • 举报
回复
create function Charrep( __str varchar(200) charset utf16)
returns varchar(200)
begin
	declare _zh varchar(200) charset utf16 default '';
	declare _unzh varchar(200) charset utf16 default '';
	declare _i int default 0;
	declare _ch varchar(1) charset utf16;
	while _i < char_length(__str) do
		set _i:=_i+1, _ch:=mid(__str, _i, 1);
		if ord(_ch) between 19968 and 40869 then
			set _zh := concat(_zh, _ch);
		else
			set _unzh := concat(_unzh, _ch);
		end if;
	end while;
	return _zh;
end;

56,687

社区成员

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

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