SQL实现两列依赖值交叉校验 筛选不符合后缀映射规则的异常记录
字段依赖异常记录筛选SQL实现
现有包含webpage、answer两个存在依赖关系字段的数据表,需筛选字段值不满足匹配规则的异常记录,目前仅写出查询语句开头SELECT *,补全逻辑如下。
匹配规则
webpage字段值以.html结尾时,answer字段值应为3webpage字段值以.py结尾时,answer字段值应为4webpage字段值以.jpg结尾时,answer字段值应为5webpage字段值为NULL时,answer字段值也应为NULL
示例校验基准
提供的样例数据中:
abc.html对应answer值3,符合规则xyz.py对应answer值4,符合规则qrs.html对应answer值2,不符合规则syt.jpg对应answer值5,符合规则webpage值为NULL对应answer值1,不符合规则
预期返回异常记录共2条:
qrs.html(answer=2)、webpage为NULL(answer=1)
完整查询语句
将语句中的your_table替换为实际使用的表名即可:
SELECT * FROM your_table WHERE (webpage LIKE '%.html' AND answer != 3) OR (webpage LIKE '%.py' AND answer != 4) OR (webpage LIKE '%.jpg' AND answer != 5) OR (webpage IS NULL AND answer IS NOT NULL);
注意事项
- 后缀匹配通过
LIKE '%.后缀'实现,其中%是SQL通配符,可匹配任意长度的前缀字符 - NULL值判断必须使用
IS NULL/IS NOT NULL语法,不能用=/!=和NULL做比较,否则会出现匹配逻辑失效 - 多个异常判定条件用
OR连接,只要命中任意一个不符合规则的场景,对应记录就会被筛选出来
内容的提问来源于stack exchange,提问作者JoseJondoe
相关产品推荐
相关产品推荐

