ASPEN SQL实现FDL标签与对应非FDL标签术语表对比查询
关联FDL与对应非FDL标签的对比查询方案
核心SQL语句
-- 提取所有带FDL_前缀的标签,并生成匹配用的基础名称 WITH fdl_tags AS ( SELECT ip_name AS fdl_name, ip_description AS fdl_desc, SUBSTRING(ip_name, 5) AS base_name FROM IP_AIDef WHERE ip_name LIKE 'FDL_%' UNION ALL SELECT ip_name AS fdl_name, ip_description AS fdl_desc, SUBSTRING(ip_name, 5) AS base_name FROM IP_DIDef WHERE ip_name LIKE 'FDL_%' ) -- 关联对应的非FDL标签,生成双列对比结果 SELECT ft.fdl_name AS FDL标签名称, ft.fdl_desc AS FDL术语描述, COALESCE(nf.non_fdl_name, '无对应非FDL标签') AS 非FDL标签名称, COALESCE(nf.non_fdl_desc, '无对应术语描述') AS 非FDL术语描述 FROM fdl_tags ft LEFT JOIN ( -- 收集所有非FDL标签,用于匹配 SELECT ip_name AS non_fdl_name, ip_description AS non_fdl_desc, ip_name AS base_name FROM IP_AIDef WHERE ip_name NOT LIKE 'FDL_%' UNION ALL SELECT ip_name AS non_fdl_name, ip_description AS non_fdl_desc, ip_name AS base_name FROM IP_DIDef WHERE ip_name NOT LIKE 'FDL_%' ) nf ON ft.base_name = nf.base_name ORDER BY ft.fdl_name;
逻辑说明
- CTE
fdl_tags:统一整合IP_AIDef和IP_DIDef中所有以FDL_为前缀的标签,同时通过SUBSTRING(ip_name,5)去除前缀,得到用于匹配非FDL标签的基础名称。 - 子查询
nf:收集两个表中所有非FDL标签,以原标签名称作为匹配键。 - LEFT JOIN关联:确保所有FDL标签都能被输出,即使没有对应的非FDL标签也会显示提示文本。
- COALESCE处理空值:避免查询结果出现NULL,用友好提示替代,便于直接查看对比。
适配调整
如果FDL标签的命名规则不是严格的FDL_前缀(比如名称中包含FDL但不是前缀),可以修改以下部分:
- 将
WHERE ip_name LIKE 'FDL_%'改为WHERE ip_name LIKE '%FDL%' - 将
SUBSTRING(ip_name,5)改为REPLACE(ip_name, 'FDL_', '')(需根据实际命名规则调整替换逻辑)
内容的提问来源于stack exchange,提问作者El_Chivo
相关产品推荐
相关产品推荐

