Comment utiliser ISNULL avec des valeurs int, des valeurs varchar
select Complaint.complaintProfileId,ISNULL(T2.MMB_id,'Notfound') as MMBId from complaints c join T2.. on T2.sno = c.sno
Cette requête me donne une erreur
Conversion failed when converting the varchar value 'Notfound' to data type int. MMB_id is a int
Merci Soleil
Essayez de convertir votre colonne int en un varchar,
SELECT Complaint.ComplaintProfileId, ISNULL(CONVERT(varchar(11), T2.MMB_id), 'Notfound') AS MMBId FROM complaints c join T2.. ON T2.sno = c.no
Utilisez-le comme
select Complaint.complaintProfileId,ISNULL(T2.MMB_id,0) as MMBId from complaints c join T2 on T2.sno = c.sno
Cela dépend de ce que vous voulez returnner, si vous voulez le text 'Not Found' alors vous pouvez faire ce qui suit à votre SELECT
avec une instruction 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
Puisque le MMD_ID
est un int
vous pouvez également faire ce qui suit pour returnner un int
:
select Complaint.complaintProfileId, IsNull(T2.MMB_id, 0) as MMBId from complaints c join T2.. on T2.sno = c.sno
C'est à vous de répondre à vos besoins.
Pour ISNULL, la première valeur détermine le type de données de l'expression et la deuxième valeur est convertie en le type de la première expression. Donc, il essaie de convertir votre varchar à un int. Je pense que COALESCE prend le type de données avec la plus haute priorité de toutes les expressions dans la COALESCE, ce qui, je pense dans ce cas, serait toujours l'int. Donc de toute façon je pense que vous avez besoin de lancer l'int à varchar.