Мне нужно сгенерировать случайное число от 1 до 99, но без десятичных знаков. Попробуйте select
следующее:
SELECT RAMD () 1 AND 99
Но у меня то же выдает ошибку поиск в гугле я так и не понял.
Мне нужно сгенерировать случайное число от 1 до 99, но без десятичных знаков. Попробуйте select
следующее:
SELECT RAMD () 1 AND 99
Но у меня то же выдает ошибку поиск в гугле я так и не понял.
Я оставляю вам пример, надеюсь, он вам поможет
SQL Server с версии 2005 имеет функцию
RAND()
, которая возвращает псевдослучайное число с плавающей запятой. Способ генерации целых чисел в определенном диапазоне заключается в использовании следующей формулы:В вашем примере это будет примерно так:
Важный:
RAND()
получает параметрseed
, который является начальным числом генератора случайных чисел, мы должны учитывать, что если мы укажем определенное начальное число в любой момент времени, генерация чисел всегда будет одинаковой. ЭтоSELECT RAND(100), RAND(), RAND()
всегда будет возвращать одни и те же три числа.Еще одна вещь, о которой следует знать,
RAND()
это если он используется внутри файлаSELECT
. Если мы сделаем что-то вроде этого:SELECT id, RAND() FROM Tabla
мы всегда будем получать одно и то же число, это потому, что неявно всегда используется одно и то же начальное число, в этих случаях решение состоит в том, чтобы использовать другое значение для каждой строки в качестве «начального значения», это может быть,ROW_NUMBER()
но может быть слишком очевидным, другой альтернативой является использованиеNEWID()
следующего:SELECT id, RAND(CAST( NEWID() AS varbinary)) FROM Tabla
Первый вариант — использовать функцию rand(), я использую ее следующим образом:
Для генерации, например, 4-значного кода.
Второй вариант с использованием функций контрольной суммы и newid:
newid() возвращает длинное буквенно-цифровое значение, контрольная сумма минимизирует это, но бывают случаи, когда она возвращает отрицательные значения, поэтому использование abs() возвращает абсолютное значение.