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

Генерирайте произволна int стойност от 3 до 6

Един полезен редактор добави 'Select' преди всяко изявление, но смисълът на този елемент е, че може да генерира уникални ключове за всеки ред в връщане, а не само за един елемент (за това бих използвал функцията Rand()). Например :Изберете топ 100 Rand(),* от tblExample

Ще върне една и съща произволна стойност за всичките 100 реда.

Докато:Изберете топ 100 ABS(КОНТРОЛНА СУМА(НОВИД()) % 10),* от tblexample

Ще върне различна произволна стойност между 0 и 9 на всеки ред в връщането. Така че докато select улеснява копирането и поставянето, можете да копирате логиката в оператор select, ако това е необходимото.

Това генерира произволно число между 0-9

SELECT ABS(CHECKSUM(NEWID()) % 10)

1 до 6

SELECT ABS(CHECKSUM(NEWID()) % 6) + 1

3 до 6

SELECT ABS(CHECKSUM(NEWID()) % 4) + 3

Динамичен (Въз основа на коментара на Eilert Hjelmeseths, актуализиран, за да коригира грешка (+ до -))

SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min

Актуализирано въз основа на коментари:

  • NEWID генерира произволен низ (за всеки ред в замяна)
  • CHECKSUM приема стойност на низ и създава число
  • модул (% ) дели на това число и връща остатъка (което означава, че максималната стойност е една по-малка от числото, което използвате)
  • ABS променя отрицателните резултати в положителни
  • след това добавете един към резултата, за да елиминирате 0 резултата (за симулиране на хвърляне на зарове)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Поддържа ли интеграцията на SQL Server CLR конфигурационни файлове?

  2. Осигурени данни в T-SQL

  3. Проверете дали дадена таблица има колона TIMESTAMP в SQL Server с OBJECTPROPERTY()

  4. Как да предотвратите атаки с инжектиране на SQL чрез Secure

  5. Извикване на съхранена процедура с параметър със стойност на таблица от java