--第一步:先创建一张对应关系
CREATE TABLE number_mapping (
chinese_number VARCHAR(10),
arabic_number VARCHAR(10)
);
INSERT INTO number_mapping (chinese_number, arabic_number)
VALUES ('一', '1'), ('二', '2'), ('三', '3');--. 可以添加更多的映射关系
--下一步:
declare @han_ying_px table(
xuh varchar(50)
)
insert into @han_ying_px(xuh) values('一')
insert into @han_ying_px(xuh) values('二')
insert into @han_ying_px(xuh) values('三')
insert into @han_ying_px(xuh) values('1.5')
insert into @han_ying_px(xuh) values('1.5.5')
insert into @han_ying_px(xuh) values('1.5.5.2')
insert into @han_ying_px(xuh) values('2.5.5.2.1')
insert into @han_ying_px(xuh) values('3.5.5.2.1.2')
select case when arabic_number is null then xuh else arabic_number end as xuhao
into #zhaunhaun
from @han_ying_px
left join number_mapping on xuh = chinese_number
select
xuhao,第一个,hm,第二个,hm1,第三个,hm2,第四个,hm3
,case when CHARINDEX('.', hm3)=0 then hm3 else SUBSTRING(hm3, 1, CHARINDEX('.', hm3) - 1) end 第五个
,case when CHARINDEX('.', hm3)=0 then '' else SUBSTRING(hm3, CHARINDEX('.', hm3) + 1, 1000)end 第六个
from (
select
xuhao,第一个,hm,第二个,hm1,第三个,hm2,
case when CHARINDEX('.', hm2)=0 then hm2 else SUBSTRING(hm2, 1, CHARINDEX('.', hm2)- 1) end 第四个,
case when CHARINDEX('.', hm2)=0 then '' else SUBSTRING(hm2, CHARINDEX('.', hm2) + 1, 1000)end hm3
from (
select xuhao,第一个,hm,第二个,hm1
,case when CHARINDEX('.', hm1)=0 then hm1 else SUBSTRING(hm1, 1, CHARINDEX('.', hm1) - 1) end 第三个,
case when CHARINDEX('.', hm1)=0 then '' else SUBSTRING(hm1, CHARINDEX('.', hm1) + 1, 1000)end hm2
from (
select xuhao,wjj1 第一个,hm,
case when CHARINDEX('.', hm)=0 then hm else SUBSTRING(hm, 1, CHARINDEX('.', hm) - 1) end 第二个,
case when CHARINDEX('.', hm)=0 then '' else SUBSTRING(hm, CHARINDEX('.', hm) + 1, 1000)end hm1
from (
SELECT xuhao,
case when CHARINDEX('.', xuhao)=0 then xuhao else SUBSTRING(xuhao, 1, CHARINDEX('.', xuhao) - 1)end wjj1
,case when CHARINDEX('.', xuhao)=0 then '' else SUBSTRING(xuhao, CHARINDEX('.', xuhao) + 1, 1000)end hm
FROM #zhaunhaun
)#a
)#b
)#c
)#d
drop table #zhaunhaun