自动生成已有部门的编号-RowNumber+Partition

针对已存在的部门表,需要新增两个字段以生成类似001、001001这样的层级编号。解决方案是利用Row_Number()结合Partition函数,确保在部门层级变化时仍能正确分配编号。当创建新部门或调整顺序时,系统能自动补足字符并重置子部门编号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

  原本数据库中已经存在 Unit (部门表),仅有一些常用字段(部门ID、部门名称、父部门ID、部门级别之类的)。现在需要两个新的字段,存储部门的编号,如父部门:001,子部门:001001,子子部门:001001001 …

问题分析:

(1)、部门编号以三个字符(001)为基础,迭代增加。需要已知部门序号基础上,自动凑齐三个字符,不足补0。(参照zhou同学)

-- New Function: PadLeft
-- Purpose: if the length of original-string is less than the specified length, fill the specified character in the left.
if Object_ID('FN_PadLeft', 'FN') is not null
	Drop Function FN_PadLeft
go
Create Function FN_PadLeft(@original_str nvarchar(500), @total_len int, @char_tofilled nvarchar(10))
Returns nvarchar(500)
as
Begin
	if @char_tofilled is null or 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值