Select SQL中的数据转换错误,不确定它可能引用的字段
Msg 8114,级别16,状态5,第1行将数据类型varchar转换为数字时出错 下面是我正在使用的代码和代码中提到的字段的模式。这背后有一些背景,我有一系列的代码。下面我只给出一个,但总共有350个。当我按indcode、area和所有权查询时,很可能数据不存在。因此,我为什么使用isnull语言。最后,我需要包含suppress=1值的行显示为N/a 对于我查询的每个indcode,我都需要一个结果。结果可能是实际数据或某些文本(NULL、N/A等) 最后是预期结果。我只给出了一个indcode的代码,但包含了六个代码,以使示例更深入Select SQL中的数据转换错误,不确定它可能引用的字段,select,null,ssms,case-when,Select,Null,Ssms,Case When,Msg 8114,级别16,状态5,第1行将数据类型varchar转换为数字时出错 下面是我正在使用的代码和代码中提到的字段的模式。这背后有一些背景,我有一系列的代码。下面我只给出一个,但总共有350个。当我按indcode、area和所有权查询时,很可能数据不存在。因此,我为什么使用isnull语言。最后,我需要包含suppress=1值的行显示为N/a 对于我查询的每个indcode,我都需要一个结果。结果可能是实际数据或某些文本(NULL、N/A等) 最后是预期结果。我只给出了一个indc
select
CASE
WHEN suppress = 0 then isnull (mnth1emp, 0)
ELSE 'N/A'
END as mnth1emp,
CASE
WHEN suppress = 0 THEN isnull (mnth2emp, 0)
ELSE 'N/A'
END as mnth2emp,
CASE
WHEN suppress = 0 THEN isnull (mnth3emp, 0)
ELSE 'N/A'
END as mnth3emp
from dbo.industryimport20172f
where area='000003' and indcode='21' and ownership='00'
suppress char (1)
mnth1emp numeric(9,0)
mnth2emp numeric(9,0)
mnth3emp numeric(9,0)
area char(6)
indcode char (6)
ownership char(2)
123 456 789
1 2 3
Null null null
2 3 4
3 4 5
Null Null Null
因此,首先跳出来的是: a) 当您要求在case语句中返回数字时,当您转到ELSE时,您需要一个字符串。尝试将所有字段强制转换为varchar,然后将其作为字符串输入:
CASE
WHEN cast(suppress as varchar) = '0' then isnull (cast(mnth1emp as varchar), '0')
ELSE 'N/A'
END as mnth1e
您可能不需要强制转换“抑制”
b) Suppress里面除了数字以外还有别的东西吗?如果是这样,则需要将零作为字符串:
CASE WHEN supress = '0' --etc.