hive - Hive 中字符串比较中 % 与 * 之间的差异
问题描述
当试图列出具有特定名称格式的数据库中的所有表名称时,以下查询可以正常工作:
show tables like '*case*';
而以下没有
show tables like '%case%';
另一方面,当比较字符串列中的实际数据时,反之亦然
工作查询:
select column from database.table where column like '%ABC%' limit 5;
不工作查询:
select column from database.table where column like '*ABC*' limit 5;
2 个运算符 * 和 % 有什么区别?
解决方案
这是正则表达式和类似模式之间的区别。
LIKE
内置在 SQL 语言中。它有两个通配符:
%
表示任意数量的字符,包括零。_
只代表一个字符。
正则表达式对于匹配字符串中的几乎任何模式要灵活得多。
当 SQL 被发明时,我认为正则表达式在计算机系统中并不常用——至少,IBM 从事关系数据库工作的人可能不熟悉 ATT 发明 Unix 的人。
当然,正则表达式比LIKE
模式强大得多。Hive 通过RLIKE
运算符(和其他一些功能)支持它们。
该SHOW
功能不是标准 SQL。因此,Hive 的开发人员选择了更灵活的模式匹配方法。
推荐阅读
- node.js - 使用 type-graphql 和 typedi 模拟依赖注入以测试解析器
- recaptcha - 如何在我的 squarespace 网站表单上放置 ReCaptcha?
- laravel-livewire - 如何在 Laravel Livewire 中获取最近上传的非图像临时文件名
- vue.js - 如何通过传递函数来创建表单验证规则?
- python - 在每行中添加时间延迟
- discord.js - 如果您有多个物品,我如何才能使它显示为“钓鱼竿(x3)”?[库存命令]
- swift - 当用户从其他应用程序导航时,applicationWillEnterForeground 被击中
- ios - 使用pickerView(swift)从响应中验证
- javascript - 当用户对消息做出反应时如何消除反应?- 不和谐.js
- c - Makefile:缺少分隔符停止,但使用制表符?