Ich versuche, mit der folgenden AbfrageHive Query Language RLIKE Abfrage
select * from mytable where mycolumn rlike '\d~[\d\.]+~\d~[\d\.]+~\d~2~(33|44)`
Hier einige Beispieldaten in Mytable
id | mycolumn
---|--------------------------------
1 | 1~2.3.1~9~333.2~3~2~33
2 | 1~1.4.3~4~233.2~4~2~44
3 | 1~53.0.2785.124~4~6.0.1~5~2~33
4 | 1~3~3~3~3~6~3
jedoch abzufragen, das Ergebnis ist immer leer.
Wie in Hive Query Language Manual angegeben,
NULL, wenn A oder B NULL, TRUE, wenn eine (möglicherweise leere) Teilkette von A die Java regulären Ausdruck B übereinstimmt, ansonsten FALSE. Zum Beispiel, 'foobar' RLIKE 'foo' ergibt TRUE und so 'foobar' RLIKE '^ f. * R $'.
Ich habe die RegExp in Java getestet, es funktioniert gut. Auch versucht, \
durch \\
zu ersetzen, und versuchte, ~
durch \~
zu ersetzen, aber es gab kein Glück.
Die Java-Code I-Test verwendet wird, ist wie folgt
Pattern p = Pattern.compile("\\d~[\\d\\.]+~\\d~[\\d\\.]+~\\d~2~(33|44)");
Könnte jemand sagen, was mit der Abfrage falsch ist? Vielen Dank!
Es stellt sich heraus, dass Bienenstock nicht unterstützt ' \ d'. Bezweifle auch, ob es andere vordefinierte Zeichen unterstützt – Jenson