ISNULL,COALESCE功能

时间:2011-07-14 21:22:20

标签: sql-server

如何将ISNULL与int值,varchar值

一起使用
 select Complaint.complaintProfileId,ISNULL(T2.MMB_id,'Notfound') as MMBId
from complaints c join T2..
on T2.sno = c.sno

此查询给我一个错误

Conversion failed when converting the varchar value 'Notfound' to data type int.
MMB_id is a int

由于 太阳

4 个答案:

答案 0 :(得分:3)

尝试将int列转换为varchar,

SELECT Complaint.ComplaintProfileId, ISNULL(CONVERT(varchar(11), T2.MMB_id), 'Notfound') AS MMBId
FROM complaints c join T2..
ON T2.sno = c.no

答案 1 :(得分:0)

这取决于您要返回的内容,如果您想要“未找到”文字,那么您可以使用SELECT语句对CASE执行以下操作:

select Complaint.complaintProfileId,
    CASE
        WHEN T2.MMB_id is not null Then T2.MMB_id
        ELSE 'Not Found'
    END  as MMBId
from complaints c join T2..
on T2.sno = c.sno

由于MMD_IDint,您还可以执行以下操作以返回int

select Complaint.complaintProfileId, IsNull(T2.MMB_id, 0) as MMBId
    from complaints c join T2..
    on T2.sno = c.sno

这取决于您的需求。

答案 2 :(得分:0)

一样使用它
select Complaint.complaintProfileId,ISNULL(T2.MMB_id,0) as MMBId from complaints c join T2 on T2.sno = c.sno 

答案 3 :(得分:0)

对于ISNULL,第一个值确定表达式的数据类型,第二个值转换为第一个表达式的类型。所以它试图将你的varchar转换为int。我认为COALESCE采用的数据类型具有COALESCE中所有表达式的最高优先级,我认为在这种情况下仍然是int。所以无论哪种方式,我认为你需要将int转换为varchar。