我有一个表#DateDay_temp
,其中有一个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。
帮助将不胜感激。
答案 0 :(得分:2)
最有可能发生此错误的原因是您的0
声明中有CASE
;因此,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
答案 1 :(得分:0)
54.56由于小数点而不是int。