我在sql查询中编写一个小的case语句,如下所示:
SELECT [##OT_NET_EQUATIONS_RHS_IDS].SYS_ID,
[##OT_NET_EQUATIONS_RHS_IDS].NODE_ID,
[##OT_NET_EQUATIONS_RHS_IDS].NODE_EQ_NO,
[##OT_NET_EQUATIONS_RHS_IDS].EQ_TYPE,
CASE EQ_TP_OFFSET
WHEN 'MULTIPLE' THEN '1'
WHEN 'SINGLE' THEN '0'
END AS EQ_TP_OFFSET,
[##OT_NET_EQUATIONS_RHS_IDS].VAR_NAME,
[##OT_NET_EQUATIONS_RHS_IDS].VAR_SET,
[##OT_NET_EQUATIONS_RHS_IDS].VAR_SUBSET,
[##OT_NET_EQUATIONS_RHS_IDS].RHS_NODE_ID,
[##OT_NET_EQUATIONS_RHS_IDS].RHS_NODE_VAR_ID,
CASE RHS_RELN
WHEN 'EQ' THEN '0'
WHEN 'LE' THEN '1'
WHEN 'GE' THEN '2'
WHEN 'MIN' THEN '3'
WHEN 'MAX' THEN '4'
END AS RHS_RELN,
[##OT_NET_EQUATIONS_RHS_IDS].RHS_OBJECT,
[##OT_NET_EQUATIONS_RHS_IDS].RHS_VAR_TYPE,
[##OT_NET_EQUATIONS_RHS_IDS].RHS_TP_OFFSET,
[##OT_NET_EQUATIONS_RHS_IDS].TIME_PRD,
[##OT_NET_EQUATIONS_RHS_IDS].RHS_VALUE,
[##OT_NET_EQUATIONS_RHS_IDS].SUB_NET_ID,
CASE RHS_OBJECT
WHEN 'OBJECTIVE' THEN 'OBJECTIVE'
END AS FUNC_NAME
FROM ##OT_NET_EQUATIONS_RHS_IDS;
我收到错误无法将varchar值'multiple'转换为数据类型int ...任何帮助。? 我不知道为什么我得到这个错误,虽然我已经放了一个''。
答案 0 :(得分:1)
我猜EQ_TP_OFFSET
是int
,所以当Sql Server评估CASE
时,它会尝试将'MULTIPLE
'与{{1}的值进行比较并且无法将其转换为EQ_TP_OFFSET
。
再次看一下,我想也许int
是EQ_TP_OFFSET
,您打算对int
进行编码,以选择比case
和{更有意义的值} {1}}。也许它应该是相反的方式?
1
同样适用于0
。