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

Làm thế nào để tạo ra một phạm vi số giữa hai số?

Chọn các giá trị không tồn tại với VALUES từ khóa. Sau đó, sử dụng JOIN s để tạo ra rất nhiều và rất nhiều kết hợp (có thể được mở rộng để tạo hàng trăm nghìn hàng và hơn thế nữa).

Phiên bản ngắn và nhanh (không dễ đọc):

WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM x ones, x tens, x hundreds, x thousands
ORDER BY 1

Bản trình diễn

Phiên bản dài hơn:

SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n)
ORDER BY 1

Bản trình diễn

Cả hai phiên bản đều có thể dễ dàng được mở rộng với WHERE , giới hạn đầu ra của các số trong một phạm vi do người dùng chỉ định. Nếu bạn muốn sử dụng lại nó, bạn có thể xác định một hàm có giá trị bảng cho nó.



  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 Client dành cho Mac OS X hoạt động với MS SQL Server

  2. SQL Server:Lỗi liên kết giao tiếp SSL yêu cầu (không nhận được gói)

  3. SQL Server - dừng hoặc ngắt việc thực thi tập lệnh SQL

  4. Hiệu suất kế hoạch thực thi thủ tục được lưu trữ kém trong SQL - đánh hơi tham số

  5. Một câu lệnh SQL Server duy nhất có phải là nguyên tử và nhất quán không?