这是我在一个formview中选择语句的一部分,它工作得很好,直到它在更新过程中遇到空值。
(SELECT TOP 1 F.tel_id FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id
ORDER BY sort_no ) AS faxid
所以我尝试使用ISNULL函数在以下方式,但它抛出错误。怎样才能做到呢?
ISNULL((SELECT TOP 1 F.tel_id FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id= @id ORDER BY sort_no ) AS faxid ,0) AS faxid
我想我已经找到问题的原因了。如果这真的是一个,那么我几乎可以肯定,如果你把第二个代码片段格式化得更漂亮,其他人会比我更早发现它。
那么,这里是你的代码片段,稍微重新格式化:ISNULL(
(
SELECT TOP 1 F.tel_id
FROM TELEPHONE as F
where F.tel_type_id = 3
AND F.client_id= @id
ORDER BY sort_no
) AS faxid,
0
) AS faxid
突出显示的部分,在子查询之后的AS fixed
位,是错误的,它不应该在那里。可能你只是忽略了它
您的ISNULL需要在F.tel_id附近
试
SELECT TOP 1 ISNULL(F.tel_id, 0) FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id ORDER BY sort_no
可以使用COALESCE函数返回null以外的值。因此,当您的查询执行并有一个值时,它将返回,否则将返回您指定的值。