You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写PL/SQL查询,返回成员的所有数据质量错误(每条错误一行)

解决PL/SQL多错误状态返回问题

原查询使用CASE语句的问题在于它是短路逻辑——只要第一个条件满足,就会直接返回对应的错误信息,后续条件不再判断,导致无法展示成员的所有不符合项。要实现每个错误单独返回一行,一个成员最多对应3条错误记录,可以用UNION ALL拆分每个错误条件为独立查询,再合并结果:

SELECT 
  member_code,
  'Forename less than 3 characters' AS error_status
FROM your_table_name
WHERE LENGTH(forename) < 3

UNION ALL

SELECT 
  member_code,
  'Forename is equal to surname' AS error_status
FROM your_table_name
WHERE forename = surname

UNION ALL

SELECT 
  member_code,
  'Date of birth after 31/01/2008' AS error_status
FROM your_table_name
WHERE date_of_birth > TO_DATE('31/01/2008', 'DD/MM/YYYY')

UNION ALL

-- 可选:添加无错误的记录,若不需要可删除此段
SELECT 
  member_code,
  'No error' AS error_status
FROM your_table_name
WHERE NOT (
  LENGTH(forename) < 3 
  OR forename = surname 
  OR date_of_birth > TO_DATE('31/01/2008', 'DD/MM/YYYY')
)
ORDER BY member_code;

说明:

  • 每个SELECT块独立判断一个错误条件,只要符合就会生成一条对应记录,不受其他条件影响
  • UNION ALL会保留所有符合条件的行(包括同一成员的多条错误记录),比UNION效率更高(无需去重)
  • 最后一段UNION ALL用于返回无错误的成员,若不需要展示无错误记录可直接删除
  • 最终结果按member_code排序,方便查看同一成员的所有错误

内容的提问来源于stack exchange,提问作者currentz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 00:56:24