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 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