急求助关于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类型的
字段名 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’。都要避免掉。。再看看有没有好办法。。。