在 Hive 中希望选择列中具有特殊字符的行

Jaz*_*ine 3 regex sql 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:]%')
Run Code Online (Sandbox Code Playgroud)

但是 Hive 提供了这个错误:

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

我应该如何设置 regexp_extract 子句?

谢谢

Dav*_*itz 5

SELECT DISTINCT user_name
FROM user_info
WHERE user_name rlike '[^a-zA-Z\\d\\s:]'
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)