MSSQL/T-SQL
난수 및 쿠폰번호를 만들기
알 수 없는 사용자
2009. 8. 21. 10:43
SQL Query을 작성하다보면 가끔씩 난수를 필요로 할때가 발생을 한다.
게임쪽에서 업무를 보고 있자니 이러한 난수 및 쿠폰번호 같은 것을 필요로 할때가 참 많다.
첫 번째, Query의 난수 범위는 11 ~ 99 이고
두 번째, Query의 난수 범위는 10 ~ 100 이다. 잘 이해가 되지 않는다면 직접 연습장을 들고 스스로 계산을 해보면 이해가 바로 될 것이다.
이것 또한, 업무에서 많이 쓰는것 중 하나이다. 어떠한 이벤트를 할때 입력해야 하는 쿠폰번호 MS-SQL에서는 newid() 함수를 사용하여 손쉽게 만들수가 있다.
게임쪽에서 업무를 보고 있자니 이러한 난수 및 쿠폰번호 같은 것을 필요로 할때가 참 많다.
/*
난수발생시키기
출처: 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() 함수를 사용하여 손쉽게 만들수가 있다.