DECODE 函数未在过程中将非 IP 值分配给 NULL

DECODE function is not assigning Non IP values to NULL in procedure

我有一个存储过程,我在其中将 IP1 站点指定为 IP,如果不是 IP1,那么它应该是 NonIP

但是当站点不是 IP1 时,解码将无法正常工作。

select  a.SAP_ID, decode (a.priority_site, 'IP1', 'IP', 'NonIP')  AS owners 
FROM
r4g_osp.enodeb a
LEFT JOIN app_wfm.wfm_candidate_status   st ON st.status = a.enodebstatus
WHERE a.sap_id in ('I-AP-NLGD-ENB-I001')
AND
a.scope IN (
    'EnodeB-Connected_Fibre',
    'EnodeB-Connected_MW'
 ) ;

下面是我的输出

如果值为空或空白,请建议如何设置 NonIP

你的外连接不是问题。

DECODE 不是问题。

运行 这个版本的代码 DECODELEFT JOIN 被注释掉了。

select * -- a.SAP_ID, decode (a.priority_site, 'IP1', 'IP', 'NonIP')  AS owners 
FROM
r4g_osp.enodeb a
-- LEFT JOIN app_wfm.wfm_candidate_status   st ON st.status = a.enodebstatus
WHERE a.sap_id in ('I-AP-NLGD-ENB-I001')
AND
a.scope IN (
    'EnodeB-Connected_Fibre',
    'EnodeB-Connected_MW'
 ) ;

结果如何?

如果您从原始查询中没有得到任何行,您应该从这个版本中得到 none。 DECODE 没有可处理的数据,因为未返回任何行。

外连接不执行任何操作,因为您只是访问和过滤来自 ENODEB table 的数据。由于是left outer join,所以没有根据状态码进行额外的过滤