急求助关于SQL取数的问题.

来源:百度知道 编辑:UC知道 时间:2024/06/10 18:27:28
有一SQL表ZL如下:
字段名 XL
数据 200ml
300kg
200g
我要取XL的去掉后面单位的数据,比如200ml,我就要取200,后面的ml不要,那语句怎么写?
SELECT FLOOR(XL) AS XL FROM ZL 不行啊,"将数据类型 nvarchar 转换为 float 时出错。"
XL这字段是nvarchar类型的

create function getnum(@s varchar(8000))
returns varchar(8000)
as
begin
while patindex('%[^0-9]%',@s)>0
begin
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
end
return @s
end
go

select dbo.getnum(XL) AS XL FROM ZL

Sharon_QQ 的方法好像可以!!
主要是SQL2000不支持正则表达式,不然很简单就可以解决

运用函数:
SELECT substring(XL,1,(charindex('ml',XL,1)-1)) AS XL from ZL WHERE XL LIKE '%ml' union all
SELECT substring(XL,1,(charindex('kg',XL,1)-1)) AS XL from ZL WHERE XL LIKE '%kg' union all
SELECT substring(XL,1,(charindex('g',XL,1)-1)) AS XL FROM ZL WHERE XL LIKE '%g' AND XL NOT LIKE '%kg'

有多少数字后面是字符的就用多少UNIO ALL吧,同时要注意字符串部分相同,如‘g’和‘kg’。都要避免掉。。再看看有没有好办法。。。