在Oracle表的第三列中仅显示两列的不匹配值

时间:2019-06-04 12:00:23

标签: oracle stored-procedures

我想创建一个stored procedure来检查以下情况。

IMG1

在以上两列的第一行RJ_SAPIDRJ_COLO_SAPID中,值I-GJ-JMLU-ENB-6011是通用的。

因此,除了该值外,我想通过存储过程在第三栏中显示其他两个值。

我尝试使用REPLACE函数,但未成功。下面是代码

SELECT REPLACE(RJ_SAPID, RJ_COLO_SAPID, '') FROM NE_STRUCTURES;

请建议如何进行。

表定义

OBJECTID                       NUMBER        
RJ_SAPID                       VARCHAR2(20)  
RJ_COLO_SAPID                  VARCHAR2(200) 
RJ_NETWORK_ENTITY_ID           VARCHAR2(30)  
STRUCTURE_NAME                 VARCHAR2(200) 
INVENTORY_STATUS_CODE          VARCHAR2(4)   
RJ_MAINTENANCE_ZONE_CODE       VARCHAR2(20)  
RJ_SITE_NAME                   VARCHAR2(200) 
RJ_SITE_ADDRESS                VARCHAR2(500) 
RJ_STRUCTURE_TYPE              VARCHAR2(20)  
TYPE_NAME                      VARCHAR2(20)  
RJ_LAST_MODIFIED_BY            VARCHAR2(50)  
RJ_LAST_MODIFIED_DATE          DATE          
RJ_STATUS                      VARCHAR2(200) 
RJ_CITY_CODE                   VARCHAR2(10)  
RJ_R4G_STATE_CODE              VARCHAR2(10)  
RJ_DISTRICT_CODE               VARCHAR2(20)  
RJ_TALUK_CODE                  VARCHAR2(20)  
RJ_JC_CODE                     VARCHAR2(20)  
RJ_JIOPOINT_SAPCODE            VARCHAR2(20)  
RJ_COMPANY_CODE_1              VARCHAR2(20)  
RJ_COMPANY_CODE_2              VARCHAR2(20)  
NE_STATUS                      VARCHAR2(20) 

2 个答案:

答案 0 :(得分:1)

只需切换参数,您就可以了:

SELECT REPLACE(RJ_COLO_SAPID, RJ_SAPID, '') FROM NE_STRUCTURES

如果要去除不必要的逗号,请使用:

SELECT REGEXP_REPLACE(REPLACE(RJ_COLO_SAPID, RJ_SAPID, ''),'^,+|,+$|(,),+','\1') FROM NE_STRUCTURES

答案 1 :(得分:1)

您可以使用REPLACE(RJ_COLO_SAPID, RJ_SAPID, ''),对于逗号,请使用LTRIM

SELECT RJ_SAPID, RJ_COLO_SAPID, 
       REPLACE(RTRIM(LTRIM(REPLACE(RJ_COLO_SAPID, RJ_SAPID, ''), ','), ','), ',,', '') AS ThirdColumn 
FROM NE_STRUCTURES