SQL Server/SQL Server Tip

RANDBETWEEN 함수 만들기

SungWookKang 2015. 7. 23. 10:19
반응형

RANDBETWEEN 함수 만들기

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012, 2014

 

엑셀에 포함되어 있는 함수인 RANDBETWEEN(범위 난수 발생)을 SQL에서 구현하는 방법에 대해서 알아 본다.

 

엑셀에서는 다음과 같이 RANDBETWEEN 함수를 사용하여 범위에 포함되어 있는 난수를 생성하는 함수가 있다.

 

SQL Server에서도 RAND() 함수를 사용하여 두 수 사이의 난수를 생성할 수 있다.

select cast(round((75-25)*rand()+25, 0) as integer) as RandBetweenValue

 

 

위의 쿼리를 원하는 범위에 따라 재사용이 가능하도록 함수를 생성한다. 다음과 같은 오류가 발생 할 것이다.

create function randbetween(@bottom int, @top int)

returns int

 

as

 

begin

    return (select cast(round((@top-bottom)*rand() + @bottom,0) as integer))

end

go

 

 

 

이 문제는 임의의 숫자를 포함하는 뷰를 사용하면 해결할 수 있다.

create view vRandomNumber

as

    select rand() as RandomNumber

go

 

create function randbetween(@bottom int, @top int)

returns int

 

as

 

begin

    return (select cast(round((@top-@bottom)* RandomNumber + @bottom,0) as integer) from vRandomNumber)

end

go

 

select dbo.randbetween(25, 75)

 

 

 

함수에서 사용할 수 없는 오퍼레이터를 뷰로 해결하여 사용자가 원하는 범위 내애서 난수를 발생시키는 방법에 대해서 알아 보았다.

 

[참고자료]

http://www.mssqltips.com/sqlservertip/3297/create-your-own-randbetween-function-in-tsql/

 

2014-08-05 / 강성욱 / http://sqlmvp.kr

 

 

MS SQL, SQLServer, 난수 발생, RAND(), 랜덤 생성, RandBetween, 함수 생성,SQL tip, 데이터베이스

반응형