这样的规则sql如何写

MadWork 2013-04-12 02:52:19
有一组数据
35000000
35010000
35010100
35010101
35010201
35020000
如何写出他们之前的父子关系
35000000是最顶级
35010000和35020000是35000000的下级
35010100是35010000的下级
35010101是35010100的下级
...全文
277 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
轻狂小疯 2013-04-12
  • 打赏
  • 举报
回复
这就是个树形的数据啊, 判断很简单,就根据后面0的位数来判断了。 我没写语句是因为我不知道LZ的最上级的节点数字是2位数还是3位数,如果lz正在苦思建表的话我觉得这样的树形会简单一点 0001 00010001 000100010001 000100010002 00010002 000100020001 0002 00020001 这样的对于节点层级关系少一点的比较好
zbdzjx 2013-04-12
  • 打赏
  • 举报
回复
select xh,
case 
when xh like '__000000' then '00000000'
when xh like '____0000' then SUBSTRING(xh,1,2)+'000000'
when xh like '______00' then SUBSTRING(xh,1,4)+'0000'
else SUBSTRING(xh,1,6)+'00'
end xh1
from (
select '35000000' xh
union all
select '35010000' xh
union all
select '35010100' xh
union all
select '35010101' xh
union all
select '35010201' xh
union all
select '35020000' xh
union all
select '35010200' xh
) aa
结果 xh xh1 35000000 00000000 35010000 35000000 35010100 35010000 35010101 35010100 35010201 35010200 35020000 35000000 35010200 35010000
MadWork 2013-04-12
  • 打赏
  • 举报
回复
就是要查出他的父级ID
Vidor 2013-04-12
  • 打赏
  • 举报
回复
这个已经是自描述的树啦,定长4级编码,每级2位,还需要怎么查呢。 给定一个编码已经包含所有祖先信息,子孙级就用like来查咯。
MadWork 2013-04-12
  • 打赏
  • 举报
回复
忘写了35010200 35010200是35010000的下级 35010201是35010200的下级
MadWork 2013-04-12
  • 打赏
  • 举报
回复
35000000是最顶级 35010000和35020000是35000000的下级 35010100是35010000的下级 35010101是35010100的下级
Mr_Nice 2013-04-12
  • 打赏
  • 举报
回复
引用 楼主 MadWork 的回复:
有一组数据 35000000 35010000 35010100 35010101 35010201 35020000 如何写出他们之前的父子关系
lz 这个不是简单的结构性文档,你可以认为3500000和35010201没有任何关系。因为他们之间没有规则限制。 父子关系在数据上必须有一个规则限制

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧