sql >> Database teknologi >  >> RDS >> MariaDB

Sådan genereres et tilfældigt heltal inden for et område i MariaDB

MariaDB inkluderer en RAND() funktion, der returnerer et tilfældigt tal. Mere præcist returnerer den en DOUBLE præcision flydende komma værdi v i området 0 <= v < 1.0 .

Det er fantastisk, men hvad nu hvis du vil generere et heltal inden for et større interval – og et interval, som du angiver?

Heldigvis er der en nem teknik til at gøre dette.

Teknikken

Nøglen til at returnere et tilfældigt heltal inden for et specifikt område er i følgende syntaks:

FLOOR(min_value + RAND() * (max_value - min_value +1)) 

Dette bruger FLOOR() funktion for at returnere den største heltalværdi, der ikke er større end dens argument. Som vores RAND() funktion er en del af argumentet, alt hvad vi skal gøre er at anvende et par flere beregninger for at specificere vores påkrævede minimum og maksimum tilfældige værdier.

Generer et tilfældigt heltal mellem 1 og 10

Så ved at bruge ovenstående syntaks er her et eksempel på generering af et tilfældigt heltal mellem 1 og 10:

SELECT FLOOR(1 + RAND() * (10 - 1 +1)); 

Resultat:

+--------------------------------+| GULV(1 + RAND() * (10 - 1 +1)) |+-------------------------------- -+| 7 |+----------------------------------------+

Lad os kalde det noget mere for at se den tilfældige effekt:

SELECT FLOOR(1 + RAND() * (10 - 1 +1)) AS r1, FLOOR(1 + RAND() * (10 - 1 +1)) AS r2, FLOOR(1 + RAND() * (10 - 1 +1)) AS r3, FLOOR(1 + RAND() * (10 - 1 +1)) AS r4, FLOOR(1 + RAND() * (10 - 1 +1)) AS r5, FLOOR(1 + RAND() * (10 - 1 +1)) AS r6, FLOOR(1 + RAND() * (10 - 1 +1)) AS r7, FLOOR(1 + RAND() * (10 - 1 +1)) AS r8;

Resultat:

+----+----+----+----+----+-----+----+----+| r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 |+----+----+----+----+----+----+----+----+| 3 | 6 | 10 | 4 | 6 | 10 | 1 | 6 |+----+----+----+----+----+-----+----+----+

Generer et tilfældigt heltal mellem 1 og 100

For at generere et tilfældigt tal mellem 1 og 100, skal vi bare erstatte 10 med 100:

SELECT FLOOR(1 + RAND() * (100 - 1 +1)); 

Resultat:

+----------------------------------------+| GULV(1 + RAND() * (100 - 1 +1)) |+-------------------------------- --+| 87 |+------------------------------------------+

Lad os kalde det noget mere for at se den tilfældige effekt:

SELECT FLOOR(1 + RAND() * (100 - 1 +1)) AS r1, FLOOR(1 + RAND() * (100 - 1 +1)) AS r2, FLOOR(1 + RAND() * (100 - 1 +1)) AS r3, FLOOR(1 + RAND() * (100 - 1 +1)) AS r4, FLOOR(1 + RAND() * (100 - 1 +1)) AS r5, FLOOR(1 + RAND() * (100 - 1 +1)) AS r6, FLOOR(1 + RAND() * (100 - 1 +1)) AS r7, FLOOR(1 + RAND() * (100 - 1 +1)) AS r8;

Resultat:

+----+----+----+----+----+-----+----+----+| r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 |+----+----+----+----+----+----+----+----+| 61 | 45 | 41 | 68 | 19 | 92 | 99 | 18 |+----+----+----+----+----+-----+-----+----+

Generer et tilfældigt heltal mellem 10000 og 50000

Lad os gøre en mere, denne gang genererer et tilfældigt tal mellem 10000 og 50000:

SELECT FLOOR(10000 + RAND() * (50000 - 10000 +1)); 

Resultat:

+----------------------------------------------------+| GULV(10.000 + RAND() * (50.000 - 10.000 +1)) |+-------------------------------- ------------+| 46884 |+----------------------------------------------------+ 

Og nogle flere opkald for at se den tilfældige effekt:

SELECT FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r1, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r2, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r3, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r4, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r5, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r6, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r7, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r8;

Resultat:

+-------+-------+-------+-------+-------+----- --+-------+-------+| r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 |+-------+-------+-------+-------+-------+------ +-------+-------+| 13688 | 37790 | 17884 | 46052 | 46608 | 44880 | 34578 | 28249 |+-------+-------+-------+-------+-------+------ +-------+-------+

  1. 2 måder at returnere rækker, der kun indeholder alfanumeriske tegn i PostgreSQL

  2. Få resultater mellem to datoer i PostgreSQL

  3. Sådan bruger du GO Statement i SQL Server til at indsætte poster i Identity Column - SQL Server / T-SQL Tutorial Del 42

  4. Hvordan hjælper pgBouncer med at sætte fart på Django