sql >> Database >  >> RDS >> SQLite

Een willekeurig getal genereren binnen een opgegeven bereik in SQLite

In SQLite kun je de random() . gebruiken functie om een ​​pseudo-willekeurig getal te genereren.

Dit is geweldig, maar de geretourneerde waarde ligt tussen -9223372036854775808 en +9223372036854775807.

Wat als u een willekeurig getal tussen 0 en 10 nodig heeft? Of zeg, 1 en 100?

Gelukkig kun je dit doen door random() . te combineren met abs() en de modulo-operator.

Willekeurig getal tussen 0 en 10

U kunt de volgende code gebruiken om een ​​pseudo-willekeurig getal tussen 0 en 10 te genereren.

SELECT abs(random() % 10);

Hier is een voorbeeld van het selecteren van meerdere willekeurige waarden.

SELECT 
  abs(random() % 10) AS R1,
  abs(random() % 10) AS R2,
  abs(random() % 10) AS R3;

Resultaat:

R1          R2          R3        
----------  ----------  ----------
2           8           5         

Vergroot het bereik

Natuurlijk kunt u de waarde wijzigen in alles wat u maar wilt (ervan uitgaande dat het binnen de random() valt bereik van mogelijke waarden).

Hier is het weer met het bereik verhoogd tot tussen 0 en 100.

SELECT 
  abs(random() % 100) AS R1,
  abs(random() % 100) AS R2,
  abs(random() % 100) AS R3;

Resultaat:

R1          R2          R3        
----------  ----------  ----------
76          60          85        

Willekeurig getal tussen 1 en 10

Als u niet wilt dat nul deel uitmaakt van de mogelijke uitkomsten, kunt u de volgende methode gebruiken.

De volgende code genereert een pseudo-willekeurig getal tussen 1 en 10.

SELECT abs(random()) % (10 - 1) + 1;

Hier is een voorbeeld van het selecteren van meerdere willekeurige waarden.

SELECT 
  abs(random()) % (10 - 1) + 1 AS R1,
  abs(random()) % (10 - 1) + 1 AS R2,
  abs(random()) % (10 - 1) + 1 AS R3;

Resultaat:

R1          R2          R3        
----------  ----------  ----------
2           1           8         

  1. Het gebruik van de PostgreSQL-reeks in de slaapstand heeft geen invloed op de reekstabel

  2. MySQL-back-up- en herstelopdrachten voor databasebeheer

  3. Waarom kan ik geen aggregatiefunctie uitvoeren op een expressie die een aggregatie bevat, maar wel door er een nieuwe select-instructie omheen te maken?

  4. Is er een manier om ARRAY's te gebruiken in Entity Framework + PostgreSql?