Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tạo giá trị int ngẫu nhiên từ 3 đến 6

Một trình soạn thảo hữu ích đã thêm 'Chọn' trước mỗi câu lệnh nhưng điểm của mục này là nó có thể tạo các khóa duy nhất cho mỗi hàng trong một lần trả lại, không chỉ một mục (Đối với điều đó, tôi sẽ sử dụng hàm Rand ()). :Chọn 100 Rand (), * hàng đầu từ tblExample

Sẽ trả về cùng một giá trị ngẫu nhiên cho tất cả 100 hàng.

Trong khi:Chọn 100 ABS hàng đầu (CHECKSUM (NEWID ())% 10), * từ tblexample

Sẽ trả về một giá trị ngẫu nhiên khác nhau từ 0 đến 9 trên mỗi hàng trong trả về. Vì vậy, trong khi select giúp sao chép và dán dễ dàng hơn, bạn có thể sao chép logic vào một câu lệnh select nếu đó là những gì được yêu cầu.

Điều này tạo ra một số ngẫu nhiên trong khoảng từ 0-9

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

1 đến 6

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

3 đến 6

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

Động (Dựa trên Nhận xét của Eilert Hjelmeseths, được cập nhật để sửa lỗi (+ thành -))

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

Cập nhật dựa trên nhận xét:

  • NEWID tạo chuỗi ngẫu nhiên (cho mỗi hàng ngược lại)
  • CHECKSUM nhận giá trị của chuỗi và tạo ra số
  • môđun (% ) chia cho số đó và trả về phần còn lại (nghĩa là giá trị tối đa nhỏ hơn một số so với số bạn sử dụng)
  • ABS thay đổi kết quả tiêu cực thành tích cực
  • sau đó thêm một vào kết quả để loại bỏ 0 kết quả (để mô phỏng một lần tung xúc xắc)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi ‘datetime’ thành ‘datetime2’ trong SQL Server (Ví dụ T-SQL)

  2. Điều gì xảy ra với một giao dịch không được cam kết khi kết nối bị đóng?

  3. 3 cách để lấy ngôn ngữ của phiên hiện tại trong SQL Server (T-SQL)

  4. SQL Server Internals:Các toán tử có vấn đề Pt. Tôi - Quét

  5. Cách lấy lịch Quý từ một ngày trong TSQL