将varchar转换为mysql中的数字

问题描述 投票:0回答:1

将数据类型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) 
sql stored-procedures
1个回答
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')
© www.soinside.com 2019 - 2024. All rights reserved.