hadoop - 如何在 Impala 的 LIKE 语句中使用子查询?
问题描述
我有一个查找表,其中包含禁止的值/字符串和一个规则编号,该编号描述了该值不能出现的位置。因此,例如,我将“C/O”作为一个值,这不能出现在名称字段的任何地方。我也有不能出现在地址中的“P.O”。我正在尝试创建一个数据质量报告来标记这些值而无需硬编码。我努力了:
Select
A.name
,A.address
From customer A
Where a.name LIKE (Select concat(‘%’, exclusion_value, ‘%’) from DQ_lookup where rule_number=2)
Or a.address LIKE (Select concat(‘%’, exclusion_value, ‘%’) from DQ_lookup where rule_number=1)
这失败了。如果有的话我怎么能让它工作?
解决方案
对于配置单元中的匹配模式,您需要使用rlike
.
A RLIKE B :如果 A 或 B 为 NULL,则为 NULL,如果 A 的任何(可能为空)子字符串与 Java 正则表达式 B 匹配,则为 TRUE,否则为 FALSE。例如,'foobar' RLIKE 'foo' 评估为 TRUE,'foobar' RLIKE '^f.*r$' 也是如此。
如下所示。
Select
A.name,
A.address
From customer A
Where
a.name RLIKE (Select exclusion_value from DQ_lookup where rule_number=2)
OR a.address RLIKE (Select exclusion_value from DQ_lookup where rule_number=1)
注意:exclusion_value 应该是一个正则表达式。
推荐阅读
- sql - 未在 Insert-Select 上收集的统计信息
- javascript - v-如果不更新导航栏
- function - 如何在 Haskell 中编写函数的类型签名
- css - 如何使用 css 创建带有翅膀或标签的 div 框
- mysql - 当表是“productDef”时,为什么 Spring Data / Hibernate 会查询表“product_def”?
- c - 为什么在这种二进制除法的情况下左移商?
- markdown - 使用 Pandoc 将部分分隔符插入 Markdown ePub
- vue.js - Vue.js + Element UI + el-popover - dynamically changing trigger doesn't work
- r - Plotly 在 R 中创建 3D 动画
- python - MicroPython:OSError:[Errno 19] ENODEV