나는 다음과 유사한 테라 데이타 데이터 세트가 : '!'좋아하는 것/좋아하는 것? ... regexp?
Customer_ID | Targeting_Region
12 | targ=EU, targ=!Eu.Fr
34 | targ=Asia
56 | targ=!EU
을 '같지 않음'을 나타냅니다. 예를 들어 행 # 1의 고객은 EU를 타겟팅하고 프랑스는 제외하려고합니다.
'긍정적 인'타겟팅이있는 행을 ('1'로) 플래그하는 필드를 만들고 싶습니다. '긍정적 인'타겟팅이란 특정 지역이 명시 적으로 포함 된 행을 말합니다 (행 1의 프랑스 제외와 같이 지역이 제외 된 지역을 '제외'타겟팅이라고합니다). 예를 들어 행 # 1에는 양수 및 음수 타겟팅이 포함되어 있고 행 # 2에는 양수 타겟팅 만 포함되어 있고 행 # 3에는 제외 타겟팅 만 포함되어 있습니다.
내가 만나는 문제는 간단한 사례 진술이 작동하지 않는다는 것입니다 (가능한 한 알 수 있습니다). 나는 아래 2 문을 시도 :
(case when targeting_region like '%targ=%'; then 1 else 0 end) as target_flag
(case when ((targeting_region like '%targ=%';) and (targeting_region not like '%targ=!%';)) then 1 else 0 end) as target_flag
는 모두 'TARG ='와 'TARG = 1을 반환하기 때문에 1 문은 위의 작동하지 않습니다!
위의 두 번째 문은 긍정적 인 타겟팅 만있는 행에 대해 1을 반환하기 때문에 작동하지 않습니다. 따라서 행 1 (위)은 0을 반환합니다 (1을 반환하려고합니다).
'targ ='다음에 오는 값은 숫자가 될 수 있습니다. 예 : 'targ = 12345'
달성 방법에 대한 아이디어가 있으십니까? 나는 teradata가 regexp라는 것을 가지고 있다고 들었다. 그러나 꽤 많은 검색 후에 좋은 설명을 찾을 수 없었다.
감사합니다.
문제 : 당신의 릴리스의 정규 표현식 기능을 포함하지 않는
경우 OREPLACE가있을 수 있습니다 나는 특정 행에 긍정적이고 부정적인 목표가 둘 다 있다고 생각하고 있습니다. 예 : 원래 게시물의 행 # 1을 참조하십시오. 이 코드와 같은 행은 코드와 함께 0을 반환하지만 1을 반환해야합니다. 응답 해 주셔서 감사합니다! – rahimftd