MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как да генерираме произволно цяло число в рамките на диапазон в MariaDB

MariaDB включва RAND() функция, която връща произволно число. По-точно, той връща DOUBLE прецизна стойност с плаваща запетая v в диапазона 0 <= v < 1.0 .

Това е страхотно, но какво ще стане, ако искате да генерирате цяло число в по-голям диапазон – и диапазон, който сте посочили?

За щастие има лесна техника за това.

Техника

Ключът за връщане на произволно цяло число в конкретен диапазон е в следния синтаксис:

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

Това използва FLOOR() функция за връщане на най-голямата целочислена стойност, не по-голяма от нейния аргумент. Виждайки нашия RAND() функцията е част от аргумента, всичко, което трябва да направим, е да приложим още няколко изчисления, за да посочим необходимите ни минимални и максимални произволни стойности.

Генерирайте произволно цяло число между 1 и 10

И така, използвайки горния синтаксис, ето пример за генериране на произволно цяло число между 1 и 10:

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

Резултат:

+--------------------------------+| ЕТАЖ(1 + RAND() * (10 - 1 +1)) |+-------------------------------- -+| 7 |+---------------------------------+

Нека го наречем още малко, за да видим случайния ефект:

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; 

Резултат:

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

Генерирайте произволно цяло число между 1 и 100

За да генерираме произволно число между 1 и 100, всичко, което трябва да направим, е да заменим 10 със 100:

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

Резултат:

+---------------------------------+| ЕТАЖ(1 + RAND() * (100 - 1 +1)) |+-------------------------------- --+| 87 |+---------------------------------+

Нека го наречем още малко, за да видим случайния ефект:

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; 

Резултат:

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

Генерирайте произволно цяло число между 10000 и 50000

Нека направим още едно, този път генерирайки произволно число между 10000 и 50000:

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

Резултат:

+----------------------------------------------+| ЕТАЖ(10000 + RAND() * (50000 - 10000 +1)) |+-------------------------------- ------------+| 46884 |+-----------------------------------------------------+ 

И още няколко обаждания, за да видите случайния ефект:

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; 

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи SHOW COLLATION в MariaDB

  2. Сравняване на облачните предложения на Galera Cluster:Част първа Amazon AWS

  3. Увеличаване на базата данни Moodle

  4. MariaDB LOCALTIMESTAMP() Обяснено

  5. Проектиране на база данни 101:Дялове в MySQL