使用以下语句检查字段是否为null,如果为null,则需要显示“Not Yet Approved”消息。否则,我希望获得下面提到的某些字段的连接结果。
select
iif(isnull(AppByENo1,'true'),'Not Yet Approved',AppByENo1+AppByDesg1+AppByDate1) as result
from myDB
where (E_No = '25')
但是在尝试运行sql查询时遇到上述错误。
请告知我犯错的地方以及如何解决这个问题。
答案 0 :(得分:3)
试试这个:
select
iif(isnull(AppByENo1,'true') = 'true','Not Yet Approved',AppByENo1+AppByDesg1+AppByDate1) as result
from myDB
where (E_No = '25')
答案 1 :(得分:1)
由于连接空值会产生null(假设你打开了appropiate settings,你应该这样做),你可以在必要时使用一个简单的coalesce
替换null:
select
COALESCE(AppByENo1+AppByDesg1+AppByDate1,'Not Yet Approved') as result
from myDB
where (E_No = '25')
如果你坚持使用iif
方法,我很乐意:
iif(AppByENo1 is null,'Not Yet Approved',AppByENo1+AppByDesg1+AppByDate1)
E.g。一个实际的null
测试,而不是尝试识别一个无法自然出现的标记字符串,并在isnull
之后执行字符串比较。
答案 2 :(得分:1)
在SELECT子句中使用CASE语句而不是IFF:
SELECT CASE WHEN ISNULL(AppByENo1,'true') = 'true' THEN 'Not Yet Approved'
ELSE AppByENo1+AppByDesg1+AppByDate1 END as result
FROM myDB WHERE E_No = '25'