[英]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.