员工自动编号sql insert 触发器
要求字段MasterNum开头为员工名字首字母,中间几个0加ID,比如插入的一条数据是:23(ID),李连杰(员工名)
那这条数据中的字段MasterNum(自动编号)应为'LLJ000023'
这是我现在写的,怎么取名字的首字母,求助
create trigger T_update_Masters
on Masters
for insert
as
begin
update Masters
set MasterNum = 'A'+right('0000000'+cast(MastersId as varchar(10)),7) where MastersId in (select MastersId from inserted)
end
[解决办法]
参照方法
http://blog.csdn.net/roy_88/article/details/1424370
[解决办法]
--下面函数用来获取中文名首字母, 从网上找的, 给你参考吧
create function getPY(@str nvarchar(4000)) returns nvarchar(4000) as begin declare @word nchar(1),@PY nvarchar(4000) set @PY='' while len(@str)>0 begin set @word=left(@str,1) --如果非汉字字符,返回原字符 set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901 then (select top 1 PY from ( select 'A' as PY,N'骜' as word union all select 'B',N'簿' union all select 'C',N'错' union all select 'D',N'鵽' union all select 'E',N'樲' union all select 'F',N'鳆' union all select 'G',N'腂' union all select 'H',N'夻' union all select 'J',N'攈' union all select 'K',N'穒' union all select 'L',N'鱳' union all select 'M',N'旀' union all select 'N',N'桛' union all select 'O',N'沤' union all select 'P',N'曝' union all select 'Q',N'囕' union all select 'R',N'鶸' union all select 'S',N'蜶' union all select 'T',N'箨' union all select 'W',N'鹜' union all select 'X',N'鑂' union all select 'Y',N'韵' union all select 'Z',N'咗' ) T where word>=@word collate Chinese_PRC_CS_AS_KS_WS order by PY ASC) else @word end) set @str=right(@str,len(@str)-1) end return @PY end GOselect dbo.GetPY('李连杰')