2016-09-28 2 views
0

조건문을 사용하여 SELECT 문에서 조건부 데이터를 가져 오는 데 어려움을 겪고 있습니다.중첩 된 식 표현식 SELECT

값이 널이 아닌 경우 외부 조건 검사가 있고 값에 특정 문자 집합이 들어 있는지 검사하는 내부 조건이 있습니다.

SELECT 문 : 불행하게도

 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 

,이 코드를 실행하면 오류 메시지 경우

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 
+0

케이스 발현하지 명령문을 처리한다. – jarlh

+0

case when externalID IS NOT NULL THEN ... – jarlh

+0

고마워요,하지만 방금 "CONTAINS 근처의 구문이 잘못되었습니다"라는 오류가 발생했습니다. –

답변

4

"잘못된 구문이 근처입니다"로 끝
안녕
이 경우 사용할 수 있습니다 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 기능이 필요한 문자열 또는 패턴을 확인하고, 데이터

+0

@ W.H 나는 그곳에 남겨 두어야했는데, – JohnHC

+0

고마워, 고쳐 주었다. 불행히도 CONTAINS는 테이블이 인덱싱되지 않으므로 사용할 수 없습니다. –

1

로 필드를 이동

+0

정확한 패턴 검사를 위해 INSTR 함수를 사용해야합니다. –

+0

감사합니다. 잘 작동합니다. –

+0

도와 드리겠습니다. –