Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Hasilkan nilai int acak dari 3 hingga 6

Editor yang membantu menambahkan 'Pilih' sebelum setiap pernyataan tetapi poin dari item ini adalah ia dapat menghasilkan kunci unik untuk setiap baris dalam pengembalian, bukan hanya satu item (Untuk itu saya akan menggunakan fungsi Rand()). Misalnya :Pilih 100 Rand () teratas,* dari tblExample

Akan mengembalikan nilai acak yang sama untuk semua 100 baris.

Sementara:Pilih top 100 ABS(CHECKSUM(NEWID()) % 10),* dari tblexample

Akan mengembalikan nilai acak yang berbeda antara 0 dan 9 pada setiap baris dalam pengembalian. Jadi, sementara pilihan memudahkan untuk menyalin dan menempel, Anda dapat menyalin logika ke dalam pernyataan pilih jika itu yang diperlukan.

Ini menghasilkan angka acak antara 0-9

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

1 sampai 6

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

3 sampai 6

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

Dinamis (Berdasarkan Komentar Eilert Hjelmeseths, diperbarui untuk memperbaiki bug( + ke -))

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

Diperbarui berdasarkan komentar:

  • NEWID menghasilkan string acak (untuk setiap baris sebagai balasannya)
  • CHECKSUM mengambil nilai string dan membuat angka
  • modulus (% ) membagi dengan angka tersebut dan mengembalikan sisanya (artinya nilai maksimal adalah satu kurang dari angka yang Anda gunakan)
  • ABS mengubah hasil negatif menjadi positif
  • lalu tambahkan satu ke hasil untuk menghilangkan 0 hasil (untuk mensimulasikan lemparan dadu)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara tercepat untuk melakukan penyisipan massal bersarang dengan penggunaan scope_identity()?

  2. 7 Cara Mengembalikan Semua Tabel dengan Kunci Utama di SQL Server

  3. Bagaimana NTILE() Bekerja di SQL Server

  4. Permintaan sql untuk tabel pohon

  5. Kelompokkan berdasarkan kolom dan beberapa Baris menjadi Satu Baris beberapa kolom