Вы должны либо использовать выражение в предложении WHERE
, либо использовать свой запрос SELECT
в качестве подзапроса, например:
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
)
where RowID is not 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 cast(de.ApprovalOrder AS VARCHAR(32))
+ cast(de.EntityCode AS VARCHAR(32))
+ isnull(cast(de.DelegationCode AS VARCHAR(32)), '') is not null
Я бы выбрал первое решение каждый раз.
Также обратите внимание, что я изменил ваше предложение WHERE
с
RowID <> NULL
К
RowID is not NULL
Это потому, что <> NULL
никогда не оценит как истину. Тесты SQL Server для NULL
(то есть неизвестно) с использованием IS
и IS NOT
.