3

特定の列に NULL 値、\N 値、または STX 文字 '\002' が含まれていないハイブ テーブルから行を検索しようとしています。目的は、これらの 3 つ以外の文字を含む行を見つけることです。

このハイブクエリを試しました:

    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

上記のケースの正しい正規表現について誰か助けてください。

ありがとうございました。

ラヴィ

4

1 に答える 1

1

ハイブは Java の正規表現エンジンを使用しているように見えるため、問題は正規表現自体、より具体的にはエスケープ シーケンスにあるようです。

次のことを試して、うまくいかない場合はお知らせください。

(?:(?:\\\\N)+|\002|NULL)
于 2013-09-02T22:00:46.517 に答える