首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hive中字符串比较中% vs *的差异

问Hive中字符串比较中% vs *的差异
EN

Stack Overflow用户
提问于 2020-03-22 14:45:43
回答 2查看 163关注 0票数 1

当尝试列出具有特定名称格式的数据库中的所有表名时,以下查询可以正常工作:

代码语言:javascript
复制
show tables like '*case*';

而下面的代码则不是

代码语言:javascript
复制
show tables like '%case%';

另一方面,当比较字符串列中的实际数据时,反之亦然

工作查询:

代码语言:javascript
复制
select column from database.table where column like '%ABC%' limit 5;

不工作的查询:

代码语言:javascript
复制
select column from database.table where column like '*ABC*' limit 5;

2个运算符*和%的区别是什么?

EN

回答 2

Stack Overflow用户

发布于 2020-03-22 20:19:22

这就是正则表达式和like模式之间的区别。

LIKE内置于SQL语言中。它有两个通配符:

  • %表示任意数量的字符,包括zero.
  • _表示一个字符。

正则表达式更加灵活,几乎可以匹配字符串中的任何模式。

当SQL被发明时,我不认为正则表达式在计算机系统中普遍使用--至少,在IBM从事关系数据库工作的人可能还不熟悉发明Unix的ATT人。

当然,正则表达式比LIKE模式强大得多。而配置单元通过RLIKE运算符(和其他一些函数)支持它们。

SHOW功能不是标准的SQL。因此,Hive的开发人员选择了更灵活的模式匹配方法。

票数 1
EN

Stack Overflow用户

发布于 2020-03-22 15:57:30

HiveQL试图模仿SQL,但它并不严格遵循它的标准。

通配符的使用与LIKE子句无关,而是与语句本身相关。SQL语句基于Java正则表达式验证通配符,而当涉及到SELECT语句时,Hive尝试坚持使用SHOW的通配符验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60796646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档