我有一个查找表,其中包含禁止的值/字符串和一个描述值不能出现的位置的规则编号。因此,例如,我将 '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 应该是一个正则表达式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句