MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

कैसे रैंड () मारियाडीबी में काम करता है

मारियाडीबी में, RAND() एक अंतर्निहित फ़ंक्शन है जो एक यादृच्छिक DOUBLE देता है सटीक फ़्लोटिंग पॉइंट मान v श्रेणी में 0 <= v < 1.0

सिंटैक्स

RAND() निम्नलिखित दो तरीकों से इस्तेमाल किया जा सकता है:

RAND()
RAND(N)

जहां N बीज मान के रूप में उपयोग किया जाने वाला एक स्थिर पूर्णांक है।

जब बीज मूल्य का उपयोग किया जाता है, RAND() स्तंभ मानों का एक पुनरावर्तनीय अनुक्रम उत्पन्न करता है।

उदाहरण

RAND() प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है बीज मूल्य निर्दिष्ट किए बिना:

SELECT RAND();

परिणाम:

+---------------------+
| RAND()              |
+---------------------+
| 0.14470310708945908 |
+---------------------+

उदाहरण - बीज के साथ

RAND() प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है साथ एक बीज मूल्य:

SELECT RAND(3);

परिणाम:

+--------------------+
| RAND(3)            |
+--------------------+
| 0.9057697559760601 |
+--------------------+

उपरोक्त उदाहरण का उपयोग करते समय हम वास्तव में अंतर नहीं बता सकते। अंतर देखने के लिए, हमें एक ही बीज का उपयोग करके कई फ़ंक्शन कॉल करने की आवश्यकता है।

इस तरह:

SELECT 
    RAND(3),
    RAND(3),
    RAND(3);

परिणाम:

+--------------------+--------------------+--------------------+
| RAND(3)            | RAND(3)            | RAND(3)            |
+--------------------+--------------------+--------------------+
| 0.9057697559760601 | 0.9057697559760601 | 0.9057697559760601 |
+--------------------+--------------------+--------------------+

हम देख सकते हैं कि तीनों कॉलों का परिणाम समान था।

यहां बताया गया है कि जब हम बीज मूल्य को छोड़ देते हैं तो क्या होता है:

SELECT 
    RAND(),
    RAND(),
    RAND();

परिणाम:

+--------------------+---------------------+---------------------+
| RAND()             | RAND()              | RAND()              |
+--------------------+---------------------+---------------------+
| 0.7037061310407763 | 0.08442136466914915 | 0.31098846095706195 |
+--------------------+---------------------+---------------------+

प्रत्येक कॉल एक अलग मान देता है।

एक सीमा के भीतर यादृच्छिक पूर्णांक

हम RAND() . को मिला सकते हैं FLOOR() . के साथ , कुछ गणनाओं के साथ, एक सीमा के भीतर एक यादृच्छिक पूर्णांक लौटाने के लिए।

ऐसा करने के लिए वाक्य रचना इस प्रकार है:

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

इसलिए, हम 1 और 10 के बीच एक यादृच्छिक पूर्णांक वापस करने के लिए निम्न कार्य कर सकते हैं:

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

परिणाम:

+---------------------------------+
| FLOOR(1 + RAND() * (10 - 1 +1)) |
+---------------------------------+
|                               6 |
+---------------------------------+

यादृच्छिक प्रभाव देखने के लिए इसे कुछ और कहते हैं:

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 |
+----+----+----+----+----+----+----+----+

टेबल से रैंडम पंक्तियां लौटाएं

RAND() ORDER BY . के संयोजन में उपयोग किया जा सकता है खंड और LIMIT डेटाबेस तालिका से यादृच्छिक पंक्तियों को वापस करने के लिए कीवर्ड:

SELECT  
    PetId,
    PetName
FROM Pets 
ORDER BY RAND() 
LIMIT 5;

उदाहरण परिणाम:

+-------+---------+
| PetId | PetName |
+-------+---------+
|     5 | Tweet   |
|     7 | Bark    |
|     1 | Fluffy  |
|     8 | Meow    |
|     3 | Scratch |
+-------+---------+

और अगर मैं इसे फिर से चलाता हूं, तो मुझे यह मिलता है:

+-------+---------+
| PetId | PetName |
+-------+---------+
|     3 | Scratch |
|     8 | Meow    |
|     4 | Wag     |
|     7 | Bark    |
|     6 | Fluffy  |
+-------+---------+

और इसी तरह…

हालांकि, ध्यान रखें कि यह काफी गहन है, और इसका उपयोग बड़े टेबल पर नहीं किया जाना चाहिए। डेटा नमूनाकरण देखें:बड़ी तालिकाओं के लिए अधिक उपयुक्त तकनीकों के लिए मारियाडीबी वेबसाइट पर एक यादृच्छिक पंक्ति को कुशलतापूर्वक खोजने के लिए तकनीकें देखें।

गैर-संख्यात्मक बीज

जब हम गैर-संख्यात्मक बीज मान प्रदान करते हैं तो क्या होता है इसका एक उदाहरण यहां दिया गया है:

SELECT RAND('five');

परिणाम:

+---------------------+
| RAND('five')        |
+---------------------+
| 0.15522042769493574 |
+---------------------+
1 row in set, 1 warning (0.000 sec)

आइए देखें चेतावनी:

SHOW WARNINGS;

परिणाम:

+---------+------+-------------------------------------------+
| Level   | Code | Message                                   |
+---------+------+-------------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: 'five' |
+---------+------+-------------------------------------------+

साथ ही, यह वही परिणाम देता है, भले ही गैर-संख्यात्मक बीज का उपयोग किया गया हो। उदाहरण के लिए, यदि मैं उस पर अलग-अलग गैर-संख्यात्मक बीज फेंकता हूं, तो मुझे वही परिणाम मिलता है:

SELECT 
    RAND('one'),
    RAND('two'),
    RAND('three');

परिणाम:

+---------------------+---------------------+---------------------+
| RAND('one')         | RAND('two')         | RAND('three')       |
+---------------------+---------------------+---------------------+
| 0.15522042769493574 | 0.15522042769493574 | 0.15522042769493574 |
+---------------------+---------------------+---------------------+
1 row in set, 3 warnings (0.000 sec)

चेतावनियों की जाँच करें:

SHOW WARNINGS;

परिणाम:

+---------+------+--------------------------------------------+
| Level   | Code | Message                                    |
+---------+------+--------------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: 'one'   |
| Warning | 1292 | Truncated incorrect INTEGER value: 'two'   |
| Warning | 1292 | Truncated incorrect INTEGER value: 'three' |
+---------+------+--------------------------------------------+

अशक्त तर्क

RAND() जब बीज null होता है तो वही मान लौटाता है :

SELECT 
    RAND(null),
    RAND(null),
    RAND(null);

परिणाम:

+---------------------+---------------------+---------------------+
| RAND(null)          | RAND(null)          | RAND(null)          |
+---------------------+---------------------+---------------------+
| 0.15522042769493574 | 0.15522042769493574 | 0.15522042769493574 |
+---------------------+---------------------+---------------------+

हालांकि, इस मामले में कोई चेतावनी नहीं है।

बहुत अधिक तर्क

कॉलिंग RAND() बहुत अधिक तर्कों के परिणामस्वरूप त्रुटि होती है:

SELECT RAND(1, 2);

परिणाम:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'RAND'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी CURRENT_ROLE () समझाया गया

  2. C++ प्रोग्राम को MariaDB से कैसे कनेक्ट करें

  3. कैसे MATCH AGAINST MariaDB . में काम करता है

  4. मारियाडीबी में DATE_SUB () कैसे काम करता है

  5. कैसे वर्ष () मारियाडीबी में काम करता है