Что означает функция RAND("totally_not_random") в SQL?

Я нашла этот запрос и почти все в нем понятно, за исключением последней строки. Что означает RAND("totally_not_random")? 
  • 18 ноября 2024 г. 14:13
Ответы на вопрос 3
В SQL функция `RAND()` обычно используется для генерации случайных чисел. Однако, использование строки, такой как "totally_not_random", в качестве аргумента для функции `RAND()` не является стандартным подходом и может зависеть от конкретной реализации системы управления базами данных (СУБД).

В большинстве СУБД `RAND()` принимает числовой аргумент, который инициализирует генератор случайных чисел. Если аргумент является числом, он определяет начальное значение для генератора, чтобы результаты были воспроизводимыми. Каждое одно и то же начальное число будет генерировать ту же последовательность случайных чисел.

Когда же используется строка, такая как "totally_not_random", она может либо игнорироваться, либо приводиться к числу в зависимости от реализации. Однако, в целом, такая строка не является стандартной и может вызвать ошибку в некоторых системах.

Если вы видите `RAND("totally_not_random")`, то это может быть попытка показать, что результат функции `RAND()` в этом контексте не должен быть случайным, либо это просто пример несуразного использования функции. Такую реализацию нужно внимательно проверять в контексте используемой СУБД, чтобы понять, какое именно поведение она вызывает.

Если вам известно, в какой конкретной СУБД вы видели этот пример, дайте знать, и я помогу более конкретно!
В запросе ошибка, он выполняться не будет. 
В MySQL RAND("totally_not_random") эквивалентен RAND(0), то есть seed генератора псевдослучайных чисел выставляется в 0. При этом каждый раз будет генерироваться одна и та же последовательность значений.
WITH `t` (`row`) AS (
  SELECT 1
  UNION SELECT 2
  UNION SELECT 3
)
SELECT `row`, RAND("totally_not_random"), RAND(0), RAND(1) FROM `t`

| row | RAND("totally_not_random") | RAND(0)             | RAND(1)            |
| --- | -------------------------- | ------------------- | ------------------ |
| 1   | 0.15522042769493574        | 0.15522042769493574 | 0.4054035371219773 |
| 2   | 0.620881741513388          | 0.620881741513388   | 0.8716141803857071 |
| 3   | 0.6387474552157777         | 0.6387474552157777  | 0.1418603212962489 |
Похожие вопросы