SQL Hive Hadoop - 带有 Like 语句的多个通配符值
SQL Hive Hadoop - Multiple Wildcard Values with Like Statement
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 与通配符 % 一起使用吗?
LIKE
和 IN
不能做你想做的事:LIKE
对标量操作数进行操作,而 IN
不进行模式匹配。
您需要重复表达:
and (a.berry like 'A10%' or a.berry like 'B10%')
另一种选择是使用正则表达式 - 当值列表变长时,输入起来会更短:
and a.berry rlike '^(A10)|(B10)'
或者:
and a.berry rlike '^[AB]10'
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 与通配符 % 一起使用吗?
LIKE
和 IN
不能做你想做的事:LIKE
对标量操作数进行操作,而 IN
不进行模式匹配。
您需要重复表达:
and (a.berry like 'A10%' or a.berry like 'B10%')
另一种选择是使用正则表达式 - 当值列表变长时,输入起来会更短:
and a.berry rlike '^(A10)|(B10)'
或者:
and a.berry rlike '^[AB]10'