汉字和多级排序显示问题

用汉字和多级排序如何实现一下 样式

一、

1.1、

1.1.1、

二、

2.1

2.1.1

多级项目符号排序

https://help.fanruan.com/finereport/doc-view-3130.html

汉字数字排序

https://help.fanruan.com/finereport/doc-view-3717.html

FineReport 博哥 发布于 2024-11-5 21:00
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
jjuanLv5见习互助
发布于2024-11-6 09:58

--第一步:先创建一张对应关系

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

最佳回答
0
CD20160914Lv8专家互助
发布于2024-11-5 21:21

你直接用函数把一级编号的数字转换成大写的就行了

 NUMTO(1)

image.png

  • 3关注人数
  • 121浏览人数
  • 最后回答于:2024-11-6 09:58
    请选择关闭问题的原因
    确定 取消
    返回顶部