隐藏

MSSQL 提取数字

发布:2014/6/20 8:52:39作者:管理员 来源:本站 浏览次数:1655

我用的是SQL2000,有一个表TA,字段如下:
ID       SP
0001    20.5
0002    HH32
0003    HK45D
0004     120
0005    中45
0006    *43万
……
SP字段中含用纯数字,也有中文加数字,也有符号加数字,也有英文加数字,而且数字和长度的位置也不固定。现在我想返回一列,在列中提取SP列中的数字部份。
请各位高手帮助。
补充一下:20.5是一个数字。 一个点的是数字,二个点的是字符。 
SP的字段类型varchar。
fupx2008的答案在运行时提示,“服务器: 消息 245,级别 16,状态 1,过程 GetNumber,行 9
将 varchar 值 '485Ⅱ' 转换为数据类型为 int 的列时发生语法错误。”未能全部查询出信息。 

 按“一力感冒清”的方法,返回有点的列为NULL。还是有问题。


解决方法:

create function dbo.GetNumber (@S varchar(100))returns intAS 
begin    
while PATINDEX('%[^0-9]%',@S)>0        
  begin               
 set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')          
end   
 return cast(@S as int)end
GO
----测试 select dbo.GetNumber('dfdfd4544545') 输出为:4544545
 -----select dbo.GetNumber(SP) from ta