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

Truy vấn để kiểm tra các phạm vi chồng chéo trong máy chủ sql?

Cách dễ nhất để tìm một phần chồng chéo là như sau:

IF EXISTS (SELECT 1 FROM table WHERE @myValueLo <= ExistingRangeEnd AND @myValueHi >= ExistingRangeStart)
  -- Overlaps
ELSE
  -- Doesn't overlap

Điều này có thể được chứng minh là hoạt động nếu bạn so sánh điều kiện ở trên với từng thanh trong sơ đồ bên dưới:

Existing range:         |-------------------|
Overlaps:       |-------------|       |------------|
                |----------------------------------|
                           |-------------|
Not overlaps:   |-----|                       |----|

trong tất cả các trường hợp trùng lặp, cả hai thử nghiệm này đều đúng:

  • ngày bắt đầu của phạm vi hiện tại luôn trước ngày kết thúc của phạm vi mới
  • ngày kết thúc của phạm vi hiện tại là sau ngày bắt đầu của phạm vi mới

Những cái không trùng lặp sẽ không đạt một trong những bài kiểm tra này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi tràn số học khi chuyển đổi varchar thành kiểu dữ liệu số. '10' <=9,00

  2. Trả về danh sách các sự kiện kích hoạt máy chủ trong SQL Server

  3. SqlParameter không cho phép Tên bảng - các tùy chọn khác mà không có cuộc tấn công tiêm sql?

  4. Thay đổi mật khẩu khi đăng nhập SA trong SQL Server (Ví dụ T-SQL)

  5. Kết quả hiện hoạt không chứa trường nào sử dụng PDO với MS SQL