2013-09-02 5 views
3

특정 열에 null 값 또는 \ N 값 또는 STX 문자 '\ 002'가 포함되지 않은 하이브 테이블에서 행을 찾으려고합니다. 목적은이 세 가지 이외의 문자가 포함 된 행을 찾는 것입니다.하이브에서 regexp_extract 사용

select column1,length(regexp_replace(column1,'\N|\002|NULL','')) as value   
    FROM table1 LIMIT 10; 

나는 다음과 같은 경우에는 제로를 기대했지만, 난 다음 무엇입니까 :

column1 value 
    NULL NULL 
      0 
    NULL NULL 
      0 
    \N\N\N\N\N\N\N\N  8 
    NULL NULL 
    \N\N\N\N\N\N\N\N  8 
    NULL NULL 
    NULL NULL 
    \N\N\N 3 

누군가가에 대한 올바른 정규식에 좀 도와 주 시겠어요

나는이 하이브 쿼리를 시도 위의 경우?

감사합니다.

라비

+0

열 하나의 데이터 유형은 무엇입니까? –

+0

column1의 날짜 유형은 문자열 – Ravi

+0

슬래시를 벗어나지 않아야합니까? 예 :'\\ N | \\ 002 | NULL' –

답변

1

그것은 문제가 정규식 자체, 더 구체적으로 이스케이프 시퀀스 것 같다, 그래서 하이브는 자바의 정규 표현식 엔진을 사용하고 있음을 본다.

는 다음과 같이 해보십시오하고 그래도 문제가 해결되지 않으면 알려 주시기 바랍니다 :

(?:(?:\\\\N)+|\002|NULL) 
+0

감사. 이것은 잘 동작했다. – Ravi

관련 문제