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

Không thể sử dụng cột tạm thời trong mệnh đề where?

Một giải pháp sẽ là thực hiện một lựa chọn con của toàn bộ câu lệnh, áp dụng mệnh đề where vào kết quả của nó

select  *
from    (
          select  cast(de.ApprovalOrder AS VARCHAR(32)) 
                  + cast(de.EntityCode AS VARCHAR(32)) 
                  + isnull(cast(de.DelegationCode AS VARCHAR(32)), '') as 'RowID'
                  , *
          from    workflow.delegation_engine de
        ) de 
where   de.RowID IS NOT NULL

Một giải pháp khác có thể là lặp lại toàn bộ mệnh đề trong mệnh đề WHERE

select  cast(de.ApprovalOrder AS VARCHAR(32)) 
        + cast(de.EntityCode AS VARCHAR(32)) 
        + isnull(cast(de.DelegationCode AS VARCHAR(32)), '') as 'RowID' ,
        *
from    workflow.delegation_engine de
where   cast(de.ApprovalOrder AS VARCHAR(32)) 
        + cast(de.EntityCode AS VARCHAR(32)) 
        + isnull(cast(de.DelegationCode AS VARCHAR(32)), '') IS NOT NULL

Hoặc bạn có thể kiểm tra từng trường riêng lẻ để tìm NULL

select  cast(de.ApprovalOrder AS VARCHAR(32)) 
        + cast(de.EntityCode AS VARCHAR(32)) 
        + isnull(cast(de.DelegationCode AS VARCHAR(32)), '') as 'RowID' ,
        *
from    workflow.delegation_engine de
where   de.ApprovalOrder IS NOT NULL
        AND de.EntityCode IS NOT NULL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đầu tiên mã khung thực thể - Thay đổi đối chiếu cột bảng

  2. MVC4:UserIsInRole - Không thể kết nối với cơ sở dữ liệu SQL Server

  3. Cách đặt các tham số SQL không tên trong SqlCommand

  4. Làm cách nào để chuyển đổi tích tắc sang định dạng ngày tháng?

  5. Nội bộ của bảy loại máy chủ SQL - Phần 2