求 能提取字段中数字的一个自定义函数

daodaoyu222 2010-11-12 01:24:26
如 一个字段的 值为 "魂牵梦萦205TF" 将205提取出来。

在网上找了下,有个sql的,如下, 不过我试了下好像mysql用不了。求高人帮忙。

IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL
DROP FUNCTION DBO.GET_NUMBER2
GO
CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_NUMBER('呵呵ABC123ABC')
GO
--123
...全文
178 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoxingyu 2010-11-12
  • 打赏
  • 举报
回复
结贴吧。
其实很简单,一个循环,然后取出来比较一下ACSII码。
daodaoyu222 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zuoxingyu 的回复:]
SQL code

set global log_bin_trust_function_creators=1;
drop function if exists GetNum;
CREATE FUNCTION GetNum (Varstring varchar(50)) RETURNS varchar(30)
BEGIN
DECLARE v_length INT DEFAULT 0;……
[/Quote]

可直接使用,感谢了。。
daodaoyu222 2010-11-12
  • 打赏
  • 举报
回复
感谢了。搞定了。。
zuoxingyu 2010-11-12
  • 打赏
  • 举报
回复

set global log_bin_trust_function_creators=1;
drop function if exists GetNum;
CREATE FUNCTION GetNum (Varstring varchar(50)) RETURNS varchar(30)
BEGIN
DECLARE v_length INT DEFAULT 0;
DECLARE v_Tmp varchar(50) default '';
set v_length=CHAR_LENGTH(Varstring);
WHILE v_length > 0 DO

if (ASCII(mid(Varstring,v_length,1))>47 and ASCII(mid(Varstring,v_length,1))<58) then

set v_Tmp=concat(v_Tmp,mid(Varstring,v_length,1));
end if;
SET v_length = v_length - 1;
END WHILE;
RETURN REVERSE(v_Tmp);
END;

select getnum('12倒萨3ppp3张三4覅5')

ACMAIN_CHM 2010-11-12
  • 打赏
  • 举报
回复
[Quote] 不过 stuff,patindex 这两个函数 mysql中都没有。[/Quote]
手册 的函数列表的字符串处理函数中,如果你找过就应该发现 MID函数。

你可以通过 i=1 to length 来分析字符串中的每个字符,如果是数字就添加到新串中,然后输出。
daodaoyu222 2010-11-12
  • 打赏
  • 举报
回复
开始就试了下。。
不过 stuff,patindex 这两个函数 mysql中都没有。

实在想不到有什么好的方法。所以上来求助了。
ACMAIN_CHM 2010-11-12
  • 打赏
  • 举报
回复
ACMAIN_CHM 2010-11-12
  • 打赏
  • 举报
回复
你找到的这个是MS SQL SERVER的语句,MYSQL的语法与SQL SERVER略有不同。 建议你自己先参考手册中的语法改一下。然后如果有什么问题可以 连同错误信息一起贴出来大家一起分析。

56,677

社区成员

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

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