【问题标题】:In Hive looking to select rows that have a special character in a column在 Hive 中寻找在列中选择具有特殊字符的行
【发布时间】:2017-03-26 02:56:08
【问题描述】:

我正在寻找在 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 [Error 10014]:第 3:21 行错误的参数 ''%[^a-zA-Z\d\s:]%'':没有匹配 org.apache.hadoop.hive.ql.udf.UDFRegExpExtract 类的方法 (细绳)。可能的选择:FUNC(string, string) FUNC(string, 字符串,整数)

我应该如何设置 regexp_extract 子句?

谢谢

【问题讨论】:

    标签: sql regex hive extract


    【解决方案1】:
    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
    

    【讨论】:

    • 这没有产生错误,但没有产生我期望的结果。还在测试。谢谢,因为我不知道 rlike 功能。
    • 效果很好 - 绝对是该问题的解决方案。谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    相关资源
    最近更新 更多