3

这是我在表单视图中选择语句的一部分,它可以正常工作,直到它在更新过程中达到空值。

 (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
4

3 回答 3

9

我想我已经找到了问题的原因。如果这真的是那个,那么我几乎可以肯定,如果你更好地格式化你的第二个代码片段,其他人会比我更早发现它。

所以,这里是你的代码片段,稍微重新格式化:

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即子查询之后的位,是错误的,它不应该在那里。可能你只是忽略了它。

于 2011-11-29T13:32:49.287 回答
2

您的 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
于 2011-11-29T11:09:41.600 回答
0

您可以使用COALESCE函数返回 null 以外的值。因此,当您的查询执行并有一个值时,它会返回,否则返回您指定的值。

于 2011-11-29T11:10:56.107 回答