SQL

MS-SQL에서 자동채번 구현 (접두어+일련번호)

100ksoft 2021. 11. 11. 18:21

1. REPLICATE, FORMAT 함수 이용하여 채번로직 구현 

 prepix + FORMAT(last_sno,REPLICATE('0',serial_len))

2. 적용예

    1) 셋업 테이블을 생성 

    2) last_sno 값을 업데이트 시킴

    3) last_sno 값에 의해 사용할 autono 표시

    4) 일련번호 형태 변경이 필요하면 Table의 자동계산 컬럼을 변경하면 됩니다.

[autono]  AS ((([prepix]+case [datetype] when 'YYMM' then CONVERT([char](4),getdate(),(12)) else '' end)+ltrim(isnull([delimiter],'')))+format([last_sno],replicate('0',[serial_len]))),

결과) H2111-0000

 

실행 쿼리 )

CREATE TABLE [dbo].[auto_no_setup](
   [table_name] [nvarchar](50) NOT NULL,
   [prepix] [nvarchar](20) NULL,
   [serial_len] [int] NULL,
   [last_sno] [int] NULL,
   [use_yn] [char](1) NULL,
   [autono]  AS ((([prepix]+case [datetype] when 'YYMM' then CONVERT([char](4),getdate(),(12)) else '' end)+ltrim(isnull([delimiter],'')))+format([last_sno],replicate('0',[serial_len]))),
   [datetype] [nvarchar](20) NULL,
   [last_dateval] [nvarchar](20) NULL,
   [delimiter] [char](1) NULL,
   CONSTRAINT [PK_auto_no_setup] PRIMARY KEY CLUSTERED 
   (
     [table_name] ASC
   ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

go

INSERT INTO auto_no_setup(table_name, prepix, serial_len, last_sno, use_yn, datetype, last_dateval, delimiter )  VALUES('TBL01', 'H', 4, 0, 1, 'YYMM', '2111','-')

 

감사합니다.