我正在寻找在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子句?
由于
答案 0 :(得分:4)
SELECT DISTINCT user_name
FROM user_info
WHERE user_name rlike '[^a-zA-Z\\d\\s:]'
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