繁体   English   中英

将nvarchar转换为int时出错

[英]Error in Converting nvarchar to int

我有一个表#DateDay_temp ,其中有一个NVARCHAR(20)类型的ExtraAdultPrice NVARCHAR(20) 当我试图在存储过程中运行此语句时

DECLARE @ExtraAdultPAX DECIMAL(10,2)

SELECT 
    @ExtraAdultPAX = SUM(CAST((CASE ISNULL(ExtraAdultPrice, '') 
                                  WHEN '' THEN 0 
                                  ELSE ExtraAdultPrice END) AS DECIMAL(10,2))) 
FROM #DateDay_temp;

当我在ExtraAdultPrice “列中传递值54.56时,我收到错误

将nvarchar值'54 .56'转换为数据类型int时转换失败。

帮助将不胜感激。

很可能是因为您的CASE语句中有0而发生此错误; 因此, CASE语句的“类型”被确定为INT - 这里完全错误....

试试这个:

SELECT 
    @ExtraAdultPAX = SUM(CAST((CASE ISNULL(ExtraAdultPrice, '') 
                                 WHEN '' THEN 0.00   <<== use "0.00" instead of just "0" !!
                                 ELSE ExtraAdultPrice 
                               END) AS DECIMAL(10,2))) 
FROM 
    #DateDay_temp;

现在,一切都应该是DECIMAL(10,2)并且不应该尝试将您的值转换为INT

由于小数点54.56不是int。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM