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

Đầu ra sai trong truy vấn FULL OUTER JOIN

Dựa trên những gì bạn đã nói trong phần nhận xét, tôi nghĩ bạn cần thay đổi một đoạn mã ...

  • Điều tôi muốn là thẻ không được có field14 dưới dạng 'Test card'


(t1.field14 <> 'Test Card' and t1.field14 is null)

=>

(t1.field14 <> 'Test Card'  OR  t1.field14 is null)


Xây dựng một bảng logic để kiểm tra xem bạn có thực sự muốn AND hoặc nếu bạn muốn OR

field14     | (field14 <> 'Test Card') | (t1.field14 is null) | A OR B | A AND B
--------------------------------------------------------------------------------
'Test Card' |            FALSE         |        FALSE         | FALSE  | FALSE
NULL        |            NULL          |        TRUE          | TRUE   | FALSE
'Any Card'  |            TRUE          |        FALSE         | TRUE   | FALSE


CHỈNH SỬA Theo dõi để nhận xét

Sử dụng OR trong đoạn mã trên không thể mang lại TRUE khi Field14'Test card' . Cả hai bài kiểm tra đều mang lại FALSE và do đó kết quả phải là FALSE .

Bạn cần chia nhỏ mọi thứ theo từng giai đoạn. Gỡ lỗi nên được thực hiện bằng cách kiểm tra từng phần một và dần dần chứng minh những gì hoạt động để cô lập những gì không. Đừng bao giờ cố gắng sắp xếp mọi thứ cùng một lúc, hãy tiếp cận mọi thứ một cách có phương pháp.

Chạy thử nghiệm này ...

SELECT
  *,
  CASE WHEN field14 <> 'Test Card'                     THEN 1 ELSE 0 END     Test1,
  CASE WHEN field14 IS NULL                            THEN 1 ELSE 0 END     Test2,
  CASE WHEN field14 <> 'Test Card' OR  field14 IS NULL THEN 1 ELSE 0 END     1_OR_2,
  CASE WHEN field14 <> 'Test Card' AND field14 IS NULL THEN 1 ELSE 0 END     1_AND_2
FROM
  tblCustomer



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TABLESAMPLE trả về số hàng sai?

  2. Làm cách nào để tạo ràng buộc KIỂM TRA trên cột VARCHAR trong SQL Server chỉ định độ dài dữ liệu tối thiểu?

  3. SQLExpress 2005 và 2008 có thể được cài đặt trên cùng một máy mà không gặp vấn đề gì không?

  4. CHỌN VÀO một biến bảng trong T-SQL

  5. Hiệu suất chèn-chọn máy chủ được liên kết