바다토리 웨어하우스

MSSQL 중복없는 랜덤코드 생성하기 본문

IT/mssql

MSSQL 중복없는 랜덤코드 생성하기

바다토리 2022. 5. 20. 13:40
반응형

상품권 코드나 Survey코드 등 중복되지 않는 고유하게 코드를 만들어야 할 때가 있습니다. 

이런 경우, 별도로 코드를 생성하는 로직을 사용해야 하는데, 숫자와 영문자가 조합된 코드를 

생성할 수 있는 스크립트를 만들어 보았습니다.

 

생성코드의 자리수와 또 개수를 임의로 지정하여 만들 수 있습니다. 

 

Declare @i bigint, @RndCode varchar(10), @chLen int, @RandCnt bigint


/*생성할 변수 정보*/
Set @chLen = 5  -- 코드 길이수
Set @RandCnt = 100000		-- 생성할 코드 수



Set @i=1

While @i<=@RandCnt
	Begin
	
	Set @RndCode = (Select Left(Replace(Replace(Replace(newid(),'-',''),'I','H'),'O','N'),@chLen))
	
	If Not Exists(Select RandCode From Random_ID_LIst Where RandCode=@RndCode and ch_length=@chLen)
		Begin
		
				Insert into Random_ID_LIst(ch_length, RandCode) values(@chLen, @RndCode)
				
				Set @i=@i+1	

		End
	
	End

@chlen으로 생성할 코드 자릿수를 지정해줍니다. 

@RandCnt는 랜덤코드를 몇 개를 만들 것인지 개수 지정을 합니다 

 

RandCode만큼 While문을 돌면서 코드를 생성하며, Exists를 이용하여 해당 테이블에 다음으로 생성된 랜덤 코드가 이미 들어 있는지 중복체크를 하게 됩니다. 

 

5자리 수로 생성한 랜덤 코드입니다. 

이상. 가끔 코드를 만들때 유용하게 사용할 수 있네요. 

반응형
Comments