首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql语句中如何去掉数字后面的字符

2013-11-11 
sql语句中怎么去掉数字后面的字符sql语句怎么去掉drug_spec字段中数字后面的字符如mg,g,ml,万u,ug,然后把

sql语句中怎么去掉数字后面的字符
sql语句怎么去掉drug_spec字段中数字后面的字符如mg,g,ml,万u,ug,然后把该字段转化为float型的,除了用replace还有没有其他的方法
示例如下:
durg_spec
0.25ug  
0.25ug 
0.5g
0.5g
0.5g
0.5g
0.5g                
0.5g                
0.5g                
0.5g
0.5g
2.5mg               
2.5mg               
2.5mg               
2.5mg               
0.15g               
0.15g               
0.3g
0.3g
0.2mg
0.2mg
0.2mg
0.2mg
0.2mg
0.2mg
5mg                 
5mg                 
5mg
5mg
5mg
5mg
5mg
5mg
8.8mg               
8.8mg               
8.8mg
8.8mg
8.8mg
8.8mg
8.8mg
8.8mg
0.1g                
0.1g                
0.1g                
0.1g                
0.1g                
0.1g                
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
1mg                 
1mg                 
1mg
1mg
1mg
1mg
1mg
1mg
30mg                
30mg                
30mg                
30mg                
30mg                
30mg                
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
30mg
20mg                
20mg                
20mg
20mg
20mg
20mg
20mg
20mg
5mg                 
5mg                 
5mg
5mg
5mg
5mg
5mg
5mg
20mg                
20mg                
20mg
20mg
20mg
20mg
20mg
20mg
5mg                 
5mg                 
5mg
5mg
5mg
5mg
5mg
5mg
0.2g
0.2g
0.2g
0.2g                
0.2g                
0.2g                
0.2g                
0.2g
0.2g
0.2g
0.2g
0.2g
0.2g
0.2g
0.2g
                    
                    




40mg                
0.25g               
0.25g               
0.25g               


0.25g               
0.25g               
0.25g               
0.25g               
0.25g
0.25g
0.25g
0.25g
0.25g
0.25g
0.25g
0.25g
0.25g
0.25g
0.25g
0.25g
0.5g
0.5g
0.5g
0.5g
0.5g
0.5g
0.5g
0.5g
0.5g
2mg                 
10mg                
10mg                
10mg
10mg
10mg
10mg
15mg                
15mg                
15mg                
15mg
15mg
15mg
15mg
5mg                 
5mg                 
5mg                 
5mg                 
5mg                 
5mg                 
5mg                 
5mg
5mg
5mg
5mg
5mg
5mg
5mg
5mg
5mg
5mg
5mg
5mg
10mg                
10mg                
10mg                
10mg                
10mg                
10mg                
10mg                
10mg
10mg
10mg
10mg
10mg
10mg
10mg
10mg
10mg
10mg
10mg
10mg
5mg                 
5mg                 
5mg                 
5mg
5mg
5mg
5mg
25mg                
25mg                
25mg
10mg                
10mg                
10mg
0.5mg               
0.5mg               
0.5mg               
0.5mg               
0.5mg               
0.5mg               
0.5mg
0.5mg
0.5mg
                    
                    

5mg                 
5mg                 
5mg                 
5mg                 
5mg                 
5mg                 
5mg
5mg
5mg
25mg
25mg
10mg
30mg
30mg
0.15g
0.15g
50mg
50mg
50mg
50mg
0.3g
0.3g
0.3g
0.3g
25mg
25mg
25mg
25mg


0.2g                
0.2g                
0.2g                


0.2g                
0.2g
0.2g
0.2g
0.2g
0.2g
0.2g
0.2g
0.2g
0.2g
0.2g
0.2g
0.2g
0.25mg              
0.25mg              
0.25mg
0.25mg
0.25mg
0.25mg
0.25mg
0.25mg
0.1g                
0.1g                
0.1g
0.1g
0.1g
0.1g
0.1g
0.1g
0.5g                
0.5g                
0.5g                
0.5g                
0.5g                
0.5g                
40mg                
40mg                
40mg
40mg
40mg
40mg
40mg
40mg
5mg                 
5mg                 
5mg
5mg
5mg
5mg
5mg
5mg
25mg                
25mg                
25mg
25mg
25mg
25mg
25mg
25mg
20mg                
20mg                
20mg
20mg
20mg
20mg
20mg
20mg
0.33g               
0.33g               
0.33g               
0.2g                
0.2g                
0.25mg              
0.25mg
0.25mg
0.25mg
75mg                
75mg                
75mg
75mg
75mg
75mg
75mg
75mg
0.5g                                             去掉数字后面的字符
[解决办法]

引用:
请大牛帮忙看一下,谢谢


我用了一部分的数据,你看看是这样不:


;with tb(durg_spec)
as
(
select '0.25ug' union all
select '0.25ug' union all 
select '0.5g' union all
select '0.5g' union all
select '0.5g' union all
select '0.5g' union all
select '0.5g' union all                
select '0.5g' union all                
select '0.5g' union all                
select '0.5g' union all
select '0.5g' union all
select '2.5mg' union all               
select '2.5mg' union all               
select '2.5mg' union all               
select '2.5mg' union all               
select '0.15g' union all               
select '0.15g' union all               
select '0.3g' union all


select '0.3g' union all
select '0.2mg' union all
select '0.2mg' union all
select '0.2mg' union all
select '0.2mg' union all
select '0.2mg' union all
select '0.2mg' union all
select '5mg' 
)


select cast(substring(durg_spec,1,patindex('%[a-z]%',durg_spec)-1) as float) as durg_spec
from tb
/*
durg_spec
0.25
0.25
0.5
0.5
0.5
0.5
0.5
0.5
0.5
0.5
0.5
2.5
2.5
2.5
2.5
0.15
0.15
0.3
0.3
0.2
0.2
0.2
0.2
0.2
0.2
5
*/


[解决办法]
引用:
用这段代码报错:
select  case when drug_spec is null then drug_spec
else cast(substring(drug_spec,1,patindex('%[a-z]%',drug_spec)-1) as float) 
end durg_spec  from atf_ypxx

消息 537,级别 16,状态 2,第 2 行
传递给 LEFT 或 SUBSTRING 函数的长度参数无效。


再试试这个:

select case when isnull(durg_spec,'') =''
                 then null
            else cast(substring(durg_spec,1,patindex('%[a-z]%',durg_spec)-1) as float)
       end as durg_spec
from tb

热点排行