2017-10-17 43 views
1

我有下面的sql代码,以及语句总是返回'Error conversion data type varchar to numeric'的情况。但是,如果我将其注释掉,那么即使在第一列中使用相同的代码,该语句也会成功运行。SQL查询仅在使用CASE WHEN时才返回错误

SELECT CAST(DATA1 AS DECIMAL(10,5)), AMOUNT, CASE WHEN NAME ='A' THEN CAST(DATA1 AS DECIMAL(10,5)) ELSE '0' END FROM TEST 

如果我像上面那样运行,它会失败。如果我将这个案例评论出来,那么它会成功运行。谢谢!

回答

1

您正在告诉它在同一列中显示两种不同的数据类型。尝试;

SELECT CAST(DATA1 AS DECIMAL(10,5)), AMOUNT, 
CASE 
    WHEN NAME LIKE 'A' THEN CAST(DATA1 AS DECIMAL(10,5)) 
    ELSE CAST(0.0 AS DECIMAL(10,5)) END FROM TEST 
2

您的CASE语句试图返回两种不同的类型DECIMAL(10,5)和varchar。

它需要返回一个类型,所以不是'0'只是使用0.0。