[SQL] 3에서 6 무작위 int 값을 생성
SQL3에서 6 무작위 int 값을 생성
마이크로 소프트 SQL 서버에서 가능가 최대로 최소에서 임의 int 값을 생성 (3-9 예, 15-99 e.t.c)
난 내가 최대 0에서 생성 할 수 있습니다 알고 있지만, 어떻게 최소의 경계를 증가?
이는 1 ~ 3에서 6으로 변경 6. 필요에 임의의 값을 생성 쿼리합니다.
SELECT table_name, 1.0 + floor(6 * RAND(convert(varbinary, newid()))) magic_number
FROM information_schema.tables
5 초 후에 추가 :
바보 같은 질문 죄송합니다 ...
SELECT table_name, 3.0 + floor(4 * RAND(convert(varbinary, newid()))) magic_number
FROM information_schema.tables
해결법
-
==============================
1.이것은 0-9 사이의 난수를 생성
이것은 0-9 사이의 난수를 생성
SELECT ABS(CHECKSUM(NEWID()) % 10)
1 내지 6
SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
3 내지 6
SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
동적 (EILERT Hjelmeseths 주석 기준)
SELECT ABS(CHECKSUM(NEWID()) % (@max - @min + 1)) + @min
의견에 따라 업데이트 :
-
==============================
2.난 당신이 SQL Server의 질문에 대한 답을 추가 한 참조 2008 당신도 할 수있다
난 당신이 SQL Server의 질문에 대한 답을 추가 한 참조 2008 당신도 할 수있다
SELECT 3 + CRYPT_GEN_RANDOM(1) % 4 /*Random number between 3 and 6*/ FROM ...
이 방법의 단점 몇 가지 있습니다
하지만 그냥 또 다른 옵션으로 추가 할 거라고 생각했다.
-
==============================
3.이 작업을 수행 할 수 있습니다 :
이 작업을 수행 할 수 있습니다 :
DECLARE @maxval TINYINT, @minval TINYINT select @maxval=24,@minval=5 SELECT CAST(((@maxval + 1) - @minval) * RAND(CHECKSUM(NEWID())) + @minval AS TINYINT)
그리고이 링크에서 직접 찍은 그, 난 정말이 답변에 대한 적절한 신용을 제공하는 방법을 모르겠어요.
-
==============================
4.PINAL 데이브의 사이트에서 니스와 간단한 :
PINAL 데이브의 사이트에서 니스와 간단한 :
http://blog.sqlauthority.com/2007/04/29/sql-server-random-number-generator-script-sql-query/
DECLARE @Random INT; DECLARE @Upper INT; DECLARE @Lower INT SET @Lower = 3 ---- The lowest random number SET @Upper = 7 ---- One more than the highest random number SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0) SELECT @Random
(I는 상위 번호를 포함하는 대문자 @받는 약간의 변화를 확인했다 1. 추가)
-
==============================
5.간단히:
간단히:
DECLARE @MIN INT=3; --We define minimum value, it can be generated. DECLARE @MAX INT=6; --We define maximum value, it can be generated. SELECT @MIN+FLOOR((@MAX-@MIN+1)*RAND(CONVERT(VARBINARY,NEWID()))); --And then this T-SQL snippet generates an integer between minimum and maximum integer values.
당신은 변경하고 필요에이 코드를 편집 할 수 있습니다.
-
==============================
6.여기에 간단한 코드의 한 줄입니다
여기에 간단한 코드의 한 줄입니다
이 사용 SQL Inbuild RAND () 함수를하십시오.
여기서 두 숫자 사이의 난수를 생성하는 공식은 (RETURN INT 범위)
여기에 귀하의 첫 번째 숫자 (최소)입니다 b는 범위에서 두 번째 번호 (최대)이다
SELECT FLOOR(RAND()*(b-a)+a)
참고 : INT 범위 번호를 얻을뿐만 아니라 CAST 또는 CONVERT 기능을 사용할 수 있습니다.
(CAST (RAND () * (25-10) +10 AS INT))
예:
SELECT FLOOR(RAND()*(25-10)+10);
여기서 두 숫자 사이의 난수를 생성하는 공식은 (RETURN DECIMAL 범위)
SELECT RAND()*(b-a)+a;
예:
SELECT RAND()*(25-10)+10;
자세한 내용은이 사항을 확인하십시오 https://www.techonthenet.com/sql_server/functions/rand.php
-
==============================
7.
SELECT ROUND((6 - 3 * RAND()), 0)
-
==============================
8.함수로 Lamak의 대답 :
함수로 Lamak의 대답 :
-- Create RANDBETWEEN function -- Usage: SELECT dbo.RANDBETWEEN(0,9,RAND(CHECKSUM(NEWID()))) CREATE FUNCTION dbo.RANDBETWEEN(@minval TINYINT, @maxval TINYINT, @random NUMERIC(18,10)) RETURNS TINYINT AS BEGIN RETURN (SELECT CAST(((@maxval + 1) - @minval) * @random + @minval AS TINYINT)) END GO
-
==============================
9.
DECLARE @min INT = 3; DECLARE @max INT = 6; SELECT @min + ROUND(RAND() * (@max - @min), 0);
단계별
DECLARE @min INT = 3; DECLARE @max INT = 6; DECLARE @rand DECIMAL(19,4) = RAND(); DECLARE @difference INT = @max - @min; DECLARE @chunk INT = ROUND(@rand * @difference, 0); DECLARE @result INT = @min + @chunk; SELECT @result;
사용자 정의 기능은 따라서 RAND의 사용을 허용하지 않는 것이 주 (). 이 (소스 : http://blog.sqlauthority.com/2012/11/20/sql-server-using-rand-in-user-defined-functions-udf/)에 대한 해결 방법은 먼저 도면을 작성하는 것이다.
CREATE VIEW [dbo].[vw_RandomSeed] AS SELECT RAND() AS seed
다음 임의의 함수를 작성
CREATE FUNCTION udf_RandomNumberBetween ( @min INT, @max INT ) RETURNS INT AS BEGIN RETURN @min + ROUND((SELECT TOP 1 seed FROM vw_RandomSeed) * (@max - @min), 0); END
-
==============================
10.일반적으로 :
일반적으로 :
select rand()*(@upper-@lower)+@lower;
귀하의 질문의 경우 :
select rand()*(6-3)+3;
<=>
select rand()*3+3;
from https://stackoverflow.com/questions/7878287/generate-random-int-value-from-3-to-6 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의 : LEFT와 GROUP_CONCAT는 가입 (0) | 2020.06.01 |
---|---|
[SQL] 하나의 ID 열이있는 테이블에 행을 삽입 만 (0) | 2020.06.01 |
[SQL] 그것은 동적하지 않고 SQL Server의 select 문에서 TOP과 함께 사용 변수 [중복] (0) | 2020.06.01 |
[SQL] 이 관계형 데이터베이스 모델 주소 정보에 좋은 방법인가? (0) | 2020.06.01 |
[SQL] 표준 조인을 대하면 SQL 하위 쿼리를 사용 하는가? (0) | 2020.06.01 |