在Hive中,希望选择列

时间:2016-11-11 20:04:50

标签: sql regex hive extract

我正在寻找在Hive中选择列中具有特殊字符[a-zA-Z0-9]的行。

我不太确定如何构造WHERE子句,但基于其他线程,我认为它应该类似于:

SELECT DISTINCT user_name
FROM user_info
WHERE user_name like regexp_extract('%[^a-zA-Z\d\s:]%')

但是Hive提供了这个错误:

  

编译语句时出错:FAILED:SemanticException [错误   10014]:第3:21行错误的参数''%[^ a-zA-Z \ d \ s:]%'':没有匹配   org.apache.hadoop.hive.ql.udf.UDFRegExpExtract类的方法   (串)。可能的选择: FUNC (字符串,字符串) FUNC (字符串,   string,int)

我应该如何设置regexp_extract子句?

由于

1 个答案:

答案 0 :(得分:4)

SELECT DISTINCT user_name
FROM user_info
WHERE user_name rlike '[^a-zA-Z\\d\\s:]'

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringOperators

hive> select 'Dudu Markovitz: 123' rlike '[^a-zA-Z\\d\\s:]';
OK
false
hive> select 'Dudu Markovitz: @123' rlike '[^a-zA-Z\\d\\s:]';
OK
true