仅在使用CASE WHEN时SQL查询返回错误

时间:2017-10-17 16:53:52

标签: sql

我有下面的sql代码和case语句总是返回'错误将数据类型varchar转换为数字'的情况。但是,如果我将其注释掉,那么即使在第一列中使用了相同的代码,语句也会成功运行。

compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
compile ('com.google.firebase:firebase-core:11.4.2')
compile ('com.google.firebase:firebase-messaging:11.4.2')
compile ('com.google.firebase:firebase-crash:11.4.2')
compile ('com.google.firebase:firebase-invites:11.4.2')
compile 'com.google.android.gms:play-services-location:11.4.2'
compile 'com.google.android.gms:play-services-gcm:11.4.2'
compile 'com.google.android.gms:play-services-maps:11.4.2'
compile 'com.google.android.gms:play-services-auth:11.4.2'
compile 'com.google.android.gms:play-services-places:11.4.2'

如果我按上述方式运行,则会失败。如果我在片段时注释掉Case,那么它会成功运行。谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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