生成编号的存储过程或者函数(这个分数不好拿啊,难)

haonanernet haonanernet 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
生成编号的存储过程或者函数
编号是树型表的编号
说明
1表 tb
字段
id varchar(50)
name varchar(50)
code varchar(50)
rank int
parentid varchar(50)
数据:

id name code rank parentid
a01 ex A 1 0
a0101 ex 01 2 a01
a0102 ex 02 2 a01
a0103 ex 03 2 a01
a02 ex B 1 0
a0201 ex 01 2 a02
a0202 ex 02 2 a02
a0202001 ex 01 3 a0202
a0202002 ex 02 3 a0202

如果给出一个参数parentid求出id
我现在用c#求的
方法是:
先 根据sql="select * from "+table+" where parentid='"+parentid+"'";
1如果有值,则求出值中最大的id再加上1返回id就是所求
注意:这里有一种情况就是 当parentid=a0202的时候,为什么下级是a0202001,而不是a020201

2如果没有值,则先判断parentid是否等于"0"
如果等于返回id="a01"
如果不等于"0"则根据sql="select * from "+table+" where id='"+parentid+"'";求出rank---> id=parentid+rank个"0"+"1"

例如:parentid=a0202002
则他会判断没有值,走上面的2,然后判断不等于"0",接着又sql="select * from "+table+" where id='a0202002'"
求出rank等于3,则通过id=parentid+rank个"0"+"1"则应该返回id=a02020020001

再例如:parentid=a01则它会通过select * from "+table+" where parentid='"+parentid+"'判断有值,则求出最大的+1应该返回a0104

再例如:parentid=0 则应该返回a03
...全文

相关推荐

评论 14
收藏 已收藏
分享
返回顶部
haonanernet
MS-SQL Server 34,876 成员 254,635 内容