将数据类型varchar转换为数字时出错。
我需要将印度逗号格式转换为值并存储在数据库中。
SET @mainamount=(SELECT Isnull(Format(Cast(Sum(receipt_amount)
AS MONEY), 'N', 'en-in'), 0) AS amount
FROM tbl_fee_receiptmaster
WHERE org_id = @org_Id
AND academic_id = @academic_Id
AND student_id = @studentId
AND duration_id = 1
AND Cast(receipt_date AS DATE) = Cast(@date AS DATE)
AND type_id = @typeid
AND receipt_code = @receiptCode
AND receipt_cancel = 0)
首先,不需要select
。我更喜欢COALESCE()
而不是ISNULL()
(COALESCE()
是标准SQL)。
@mainamount = coalesce(format(cast(sum(receipt_amount) as money), 'N', 'en-in'), 0)
问题是0
指定返回类型为数字。当存在类型冲突时,通常会选择限制性更强的类型-也就是说,当必须选择字符串时,会将字符串转换为数字和日期。
但是FORMAT()
返回一个字符串。您可以通过将替代值设置为字符串来解决此问题:
@mainamount = coalesce(format(cast(sum(receipt_amount) as money), 'N', 'en-in'), '0')