Following is my query:
UPDATE DSOPI_PERSON_ADDR_RULE ADDR
SET ADDR.DEPT_NAME =
CASE
WHEN regexp_like (UPPER(addr.src_address_line1), 'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG')
AND ADDR.ORG_NAME IS NOT NULL
THEN ADDR.SRC_ADDRESS_LINE1
WHEN regexp_like (UPPER(addr.src_address_line2), 'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG')
AND ADDR.ORG_NAME IS NOT NULL
THEN ADDR.SRC_ADDRESS_LINE2
WHEN regexp_like (UPPER(addr.src_address_line3), 'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG')
AND ADDR.ORG_NAME IS NOT NULL
THEN ADDR.SRC_ADDRESS_LINE3
WHEN regexp_like (UPPER(addr.src_address_line4), 'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG')
AND ADDR.ORG_NAME IS NOT NULL
THEN ADDR.SRC_ADDRESS_LINE4
ELSE NULL
END;
What I would like to do is, when the case condition is true I would like to make the respective address lines NULL. Is there any way to achieve it with this code?
One option you have is to add additional
CASEstatements for each address field:The code is duplicated, but this allows you to set the address lines to null when the condition is met.