SELECT中的嵌套Case表达式

时间:2016-09-28 10:37:11

标签: sql tsql

使用条件语在SELECT语句中拉条件数据时遇到了一些困难。

外部条件检查值是否为null,内部条件检查值是否包含特定字符集。

选择语句:

       refID = CASE externalID
       WHEN IS NOT NULL THEN CASE internalType
           WHEN CONTAINS(internalType,'B1') THEN 'C1' + externalID
           WHEN CONTAINS(internalType,'B2') THEN 'C2' + externalID
           ELSE 'Ext'
           END
       ELSE 'N/A'
       END   

不幸的是,运行此代码会以错误消息“ IS附近的错误语法”结束

2 个答案:

答案 0 :(得分:4)

将字段移动到案例中

   refID = CASE 
                WHEN externalID IS NOT NULL THEN 
                     CASE 
                          WHEN internalType like '%B1%' THEN 'C1' + externalID
                          WHEN internalType like '%B2%' THEN 'C2' + externalID
                          ELSE 'Ext'
                     END
                ELSE 'N/A'
           END  

答案 1 :(得分:1)



在这种情况下,您可以使用 INSTR 功能,

refID = CASE externalID
   WHEN IS NOT NULL THEN CASE internalType
       WHEN INSTR(internalType,'B1') THEN 'C1' + externalID
       WHEN INSTR(internalType,'B2') THEN 'C2' + externalID
       ELSE 'Ext'
       END
   ELSE 'N/A'
   END 

INSTR - instring函数检查所需的字符串或模式并处理数据