日期:2014-05-18  浏览次数:20432 次

员工自动编号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
------解决方案--------------------
--下面函数用来获取中文名首字母, 从网上找的, 给你参考吧
SQL code

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 

GO

select dbo.GetPY('李连杰')