컴퓨터/MSSQL

MSSQL RAND 함수로 난수 생성 [단일 행, 다중 행]

k1asd1 2024. 8. 28. 17:02
728x90
반응형

MSSQL 사용 간 난수 생성이 필요해 찾다가 알게 되어 기록으로 남기고자 합니다.

 

* 최저값과 최고값을 포함하는 경우 (단일)

DECLARE @min INT = 0 --최소
DECLARE @max INT = 4 --최대


SELECT CONVERT(INT, ((@max + 1) - @min) * RAND() + @min)

 

실행 결과

 

 

* 최저값과 최고값을 포함하는 경우 (다중)

- 임의의 임시 테이블을 생성하고 간단하게 값을 입력합니다.

CREATE TABLE #temp(
 idx int,
 text varchar(4),
 randdom int
);

INSERT INTO #temp VALUES (1, 'test', 0)
INSERT INTO #temp VALUES (2, 'test', 0)
INSERT INTO #temp VALUES (3, 'test', 0)
INSERT INTO #temp VALUES (4, 'test', 0)
INSERT INTO #temp VALUES (5, 'test', 0)

 

- 다중행에 적용하기 위해 SELECT문을 작성합니다.

DECLARE @min INT = 0 --최소
DECLARE @max INT = 4 --최대


SELECT idx, text, CONVERT(INT, ((@max + 1) - @min) * RAND() + @min)
  FROM #temp

 

- 조회 시 각 행에 전부 동일한 난수 생성 결과가 조회됩니다.

실행 결과

 

- 각 행에 난수를 적용하기 위해 아래와 같이 변경합니다.

DECLARE @min INT = 0 --최소
DECLARE @max INT = 4 --최대

SELECT idx, text, CONVERT(INT, ((@max + 1) - @min) * RAND(CONVERT(VARBINARY, NEWID())) + @min)
  FROM #temp

 

실행 결과

 

이상입니다.

728x90
반응형