Aracılığıyla paylaş


RAND (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'de Azure Synapse AnalyticsSQL veritabanı

Ortadan , 1hariç olarak sözde rastgele bir float değeri 0 döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

RAND ( [ seed ] )

Uyarı

Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

Arguments

seed

Tohum değerini veren bir tamsayı ifadesi (tinyint, smallint veya int). Tohum belirtilmemişse, SQL Server Veritabanı Motoru rastgele bir tohum değeri atar. Belirli bir tohum değeri için, geri dönen sonuç her zaman aynıdır.

Dönüş türleri

float

Açıklamalar

Aynı tohum değeriyle tekrarlayan ' RAND() çağrıları aynı sonucu verir.

  • Bir bağlantı için, RAND() belirli bir tohum değeriyle çağrılırsa, sonraki tüm çağrılar RAND() tohumlanmış RAND() çağrıya göre sonuç üretir. Örneğin, aşağıdaki sorgu her zaman aynı sayılar dizisini döndürür.

    SELECT RAND(100),
            RAND(),
            RAND();
    
  • Fonksiyonu RAND() bir UPDATE sorguda INSERT kullandığınızda, etkilenen tüm satırlar aynı değeri alır.

Örnekler

A. Dört farklı rastgele sayı oluşturun

Aşağıdaki örnek, fonksiyon tarafından RAND() oluşturulan dört farklı rastgele sayı üretir.

DECLARE @counter AS SMALLINT;

SET @counter = 1;

WHILE @counter < 5
    BEGIN
        SELECT RAND() AS RandomNumber;
        SET @counter = @counter + 1;
    END
GO

B. Rastgele 0 veya 1 oluşturun

Aşağıdaki örnek, ROUND() fonksiyonun rastgele olarak herhangi birini 0 veya 1'i döndürmesini sağlar.

SELECT ROUND(RAND(), 0) AS ZeroOrOne;
GO

Uyarı

Bu örnekte, FLOOR() fonksiyon her zaman dönerken0CEILING(), fonksiyon her 1zaman döndürür.

C. 1'den büyük rastgele sayılar üretin

Rastgele float'ın aralığını, fonksiyonu RAND() bir tam sayı değeriyle çarparak ölçekleyebilirsiniz. Aşağıdaki örnek, ile 10arasında 0 rastgele bir float döndürür.

DECLARE @Constant AS INT;
SET @Constant = 10;

SELECT @Constant * RAND() AS RandomNumber;
GO

D. Rastgele tam sayılar üret

Fonksiyonu RAND() ölçeklendirip , FLOOR(), veya CEILING() fonksiyonlarla birleştirerek ROUND()rastgele bir tam sayı değeri oluşturabilirsiniz. Aşağıdaki örnek, ile 10arasında rastgele bir tam sayı 0 döndürür.

DECLARE @Constant AS INT;
SET @Constant = 10;

SELECT ROUND(@Constant * RAND(), 0) AS FirstRandomInteger,
       FLOOR(@Constant * RAND()) AS SecondRandomInteger,
       CEILING(@Constant * RAND()) AS ThirdRandomInteger;
GO

E. Rastgele değerleri tabloya ekleyin

Aşağıdaki örnek, bir tablo değişkenini rastgele int, float ve bit değerleriyle doldurur.

DECLARE @RandomTable TABLE (
    RandomIntegers INT,
    RandomFloats FLOAT,
    RandomBits BIT);

DECLARE @RowCount AS INT;
DECLARE @Counter AS INT;

SET @RowCount = 10;
SET @Counter = 1;

WHILE @Counter <= @RowCount
    BEGIN
        INSERT INTO @RandomTable
        VALUES (ROUND(10 * RAND(), 0), RAND(), CAST (ROUND(RAND(), 0) AS BIT));
        SET @Counter = @Counter + 1;
    END

SELECT *
FROM @RandomTable;
GO