조회 조건에 주소1, 주소2 ... 주소5가 있는 상황에 각 주소를 입력하게되면 OR 조건으로 해당 데이터를 가져올 수 있도록 SQL 구현.
처음에는 Oracle Text의 contains 를 활용하여 구현하였으나 한글에 대한 것은 지원이 잘 안 되는 부분들이 확인되어 정규 표현식으로 대체 구현하게 됨.
데이터가 분명히 존재함에도 '충청북도', '충청남도'로는 조회되지 않음
AS-IS
and (decode(nvl2(:P302_ADDR1,1,0)+nvl2(:P302_ADDR2,1,0)+nvl2(:P302_ADDR3,1,0)+nvl2(:P302_ADDR4,1,0)+nvl2(:P302_ADDR5,1,0), 0, '%') = '%'
or contains(pomst.cust_addr, '%'||:P302_ADDR1||'%|%'||:P302_ADDR2||'%|%'||:P302_ADDR3||'%|%'||:P302_ADDR4||'%|%'||:P302_ADDR5||'%') > 0)
TO-BE
and REGEXP_LIKE(pomst.cust_addr, nvl((select listagg(column_value, '|') from table(apex_string.split('부산|광주|충청||', '|')
)
), '|')
)
댓글 없음:
댓글 쓰기