【问题标题】:SQL Hive Hadoop - Multiple Wildcard Values with Like StatementSQL Hive Hadoop - 带有 Like 语句的多个通配符值
【发布时间】:2020-09-14 22:53:59
【问题描述】:

HIVE/Hadoop - 我将如何使用 like 语句创建具有多个通配符值的查询(我尝试了与命令类似但不起作用)。

查询示例

select *
from schema.table a
where a.apple = '1'
and a.berry LIKE ('A10%','B10%')
;

上述方法无效。我确实尝试用 IN 替换 LIKE 但查询拒绝停止运行,不确定为什么 IN 命令导致查询继续运行甚至不产生结果。在这里使用 OR 我唯一的选择吗?我有大约 15 个值需要通配符值。


作为一个旁注问题,以更好地帮助我理解上述问题, 我注意到我的查询在使用时没有结束时间运行:

and a.berry IN ('A10%')

and a.berry LIKE 'A10%'

我是否应该始终将 LIKE 与通配符 % 一起使用?

【问题讨论】:

    标签: sql hadoop hive where-clause sql-like


    【解决方案1】:

    LIKEIN 不能做你想做的事:LIKE 对标量操作数进行操作,而 IN 不做模式匹配。

    你需要重复表达式:

    and (a.berry like 'A10%' or a.berry like 'B10%')
    

    另一种选择是使用正则表达式 - 当值列表变长时,键入会更短:

    and a.berry rlike '^(A10)|(B10)'
    

    或者:

    and a.berry rlike '^[AB]10'
    

    【讨论】:

    • 对于正则表达式,假设我的值为 C1%。我是否必须创建另一行,因为与其他值相比,它偏离了一个字符?非常感谢!
    • @Logan:and (a.berry like 'A10%' or a.berry like 'B10%' or a.berry like 'C10%'... 或:and a.berry rlike '^(A10)|(B10)|(C10)'
    • 对于 rlike,我得到的错误是 Unexpected token 'rlike' was found。预期的标记可能包括:“LIKE”。
    • 错误已解决 - 它在我身边。对于一个单独的问题,我可以在 Toad for DB2 中使用 rlike 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 2015-02-18
    相关资源
    最近更新 更多