如何将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
由于 太阳
答案 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_ID
是int
,您还可以执行以下操作以返回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。