用于生成按年客户端代码的 SQL 函数: 以下 sql 函数将根据服务器日期生成按年客户端代码。例如对于 2012 客户,代码将是
CL12-00001
, CL12-00002
,.... 2013 年的代码将是
CL13-00001
, CL13-00002
,....等等。
(此处 CL 表示客户,2012 年为 12,2013 年为 13。)
CREATE function [dbo].[GenClientCode]()
returns nvarchar(20)
as
begin
Declare @Code nvarchar(20), @cyear nvarchar(2);
SET @cyear= ( SUBSTRING(CONVERT(nvarchar(2),DATEPART(year, sysdatetime())),3,2));
SET @Code= (Select MAX(CONVERT(INT, SUBSTRING(ClientCode,6, LEN(ClientCode))))+1
from tblClientInfo WHERE SUBSTRING(ClientCode,3,2)=@cyear);
--assume the code format is like CL12-00001, here 12 for year 2012
if (@Code is null or @Code='')
set @Code='00001'
else if LEN(@Code)=1
set @Code='0000'+ CONVERT(nvarchar(1),@Code);
else if LEN(@Code)=2
set @Code='000'+ CONVERT(nvarchar(2),@Code);
else if LEN(@Code)=3
set @Code='00'+ CONVERT(nvarchar(3),@Code);
else if LEN(@Code)=4
set @Code='0'+ CONVERT(nvarchar(4),@Code);
set @Code='CL'+@cyear+'-'+ CONVERT(nvarchar(10),@Code);
return @Code;
end
我的功能是否最佳?