年ごとのクライアント コードを生成するための 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
私の機能は最適ですか?