2016-07-18 11 views
2

Ich versuche, ein Stichwort ein (Die Abfrage gefolgt zu suchen ist von der Form:.Hive regex RLIKE Fehler in Klammern

select * from <tablename> where colname rlike 'somename\('; 

Da (ein metacharacter, ich entkam jedoch hive wirft ein . Fehler während des oben Regex unclosed Gruppen im Zusammenhang Verarbeitung Wie passe ich ein ‚(‘ in hive regex

+1

Doppel escape die '(': 'Select * von wo colname wie 'somename \\ (';' –

Antwort

1

Sie können entweder die doppelten \:

select * from <tablename> where colname RLIKE 'somename\\('; 
             ^^^^^   ^^ 

Oder es in einer Zeichenklasse verwenden:

select * from <tablename> where colname RLIKE 'somename[(]'; 
             ^^^^^   ^^^ 

Andernfalls wird die \( als Literal ( syntaktisch analysiert, und eine Öffnung Gruppe regex Bediener erfordert das Schließen ) Gegenstück betrachtet.

+0

Danke für die schnelle Antwort. Ich versuchte die doppelte \ Ansatz, aber ich bekomme immer noch den gleichen Fehler - "Java. util.regex.PatternSyntaxException: Nicht geschlossene Gruppe in der Nähe von Index ... " Meine Abfrage sieht so aus: $ hive -e" select col1, col2 from tblname.dbname wo col3 rlike 'somename \\\' ('" – Karan

+0

Vielleicht wollten Sie 'RLIKE' verwenden? –

+0

Sorry, Tippfehler. Es ist rlike. – Karan