Header Ads Widget

Responsive Advertisement

[mssql] mssql 난수 랜덤 숫자 만들기, 특정 구간 ( rand() )

RAND() 함수를 활용하여야 한다. 아니면 직접 랜덤으로 숫자를 뽑을 수 있게 처리 하여야 할 것이다.
RAND() 함수를 사용하여 난수를 발생 시키고자 한다면..

1. 범위 값을 지정할 경우...

DECLARE @l_S_LIMIT  INT,         /* 범위 시작      */
             @l_E_LIMIT INT           /* 범위 마지막  */

SET @l_S_LIMIT = 10
SET @l_E_LIMIT = 100

SELECT    ROUND( (@l_E_LIMIT - @l_S_LIMIT + 1) * RAND() + @l_S_LIMIT , 0, 1)

10에서 100 사이의 값을 무작위로 반환하게 된다.

즉 숫자는 10과 100을 제외한 11 ... 99의 값이 된다.
만약 범위 값을 포함 시키고자 한다면


SELECT   ROUND( ( (@l_E_LIMIT + 1) - @l_S_LIMIT ) * RAND() + @l_S_LIMIT , 0, 1)

이렇게 해주면 10과 100을 포함한 10 ... 100 의 값이 된다.


ROUND를 사용하지 않고 타입을 INT로 캐스팅 하여도 된다.
ROUND에서 3번째 매개변수에 1 값은 반올림 하지않고 반환하게 하기 위함이다.


# 참고 : http://bluemir7.tistory.com/60

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


2. 소숫점 이하 자리 저정하여 문자열로 반환하기

-- 숫자 데이터에서 변환된 문자 데이터를 반환합니다.
-- 결과가 소수점포함 총 7자리, 소수점이하 1자리인 varchar 타입 반환
select STR( 20 * rand() + 5, 7, 1 )
go


참고 :
# http://freeprog.tistory.com/73
# https://msdn.microsoft.com/ko-kr/library/ms189527.aspx

댓글 쓰기

0 댓글