我用的是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
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有