본문 바로가기

MSSQL/T-SQL

난수 및 쿠폰번호를 만들기

SQL Query을 작성하다보면 가끔씩 난수를 필요로 할때가 발생을 한다.
게임쪽에서 업무를 보고 있자니 이러한 난수 및 쿠폰번호 같은 것을 필요로 할때가 참 많다.

/*

             난수발생시키기

             출처: http://bluemir7.tistory.com/60

*/

declare @is_limit int -- 난수범위 시작 숫자

declare @ie_limit int -- 난수범위 끝 숫자

 

set @is_limit = 10

set @ie_limit = 100

 

select round(((@ie_limit - @is_limit + 1) * rand() + @is_limit), 0, 1) as randomNum

/*

randomNum

----------------------

73

*/

 

select round(((@ie_limit - @is_limit) * rand() + @is_limit), 0, 1) as randomNum

/*

randomNum

----------------------

28

*/


첫 번째, Query의 난수 범위는 11 ~ 99 이고
두 번째, Query의 난수 범위는 10 ~ 100 이다. 잘 이해가 되지 않는다면 직접 연습장을 들고 스스로 계산을 해보면 이해가 바로 될 것이다.

select replace(newid(),'-','') as '쿠폰번호'

/*

             쿠폰번호

             ----------------------------------------------------

             99696D759F614BE6A90A2A3A6523BA5E

*/


이것 또한, 업무에서 많이 쓰는것 중 하나이다. 어떠한 이벤트를 할때 입력해야 하는 쿠폰번호 MS-SQL에서는 newid() 함수를 사용하여 손쉽게 만들수가 있다.