sql中的case语句问题

时间:2011-10-08 04:45:40

标签: sql tsql

我在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 ...任何帮助。? 我不知道为什么我得到这个错误,虽然我已经放了一个''。

1 个答案:

答案 0 :(得分:1)

我猜EQ_TP_OFFSETint,所以当Sql Server评估CASE时,它会尝试将'MULTIPLE'与{{1}的值进行比较并且无法将其转换为EQ_TP_OFFSET

再次看一下,我想也许intEQ_TP_OFFSET,您打算对int进行编码,以选择比case和{更有意义的值} {1}}。也许它应该是相反的方式?

1

同样适用于0