-- regexp_substr 를 이용하여 | 구분자의 각 위치값 구하기 WITH t AS ( SELECT '|12|N36' GB FROM dual ) SELECT regexp_substr(GB,'[^|]+',1,1) AS gb1 -- 구분자의 첫번째값 , regexp_substr(GB,'[^|]+',1,2) AS gb2 -- 구분자의 두번째값 , regexp_substr(GB,'[^|]+',1,3) AS gb3 -- 구분자의 세번째값 FROM t ;
원하는결과처럼 나오게하려면 쿼리수정 어떻게해할까요?
즉.구분자(|)의 위치값이 널이여도 위치값이 나오게(널).
-- 현재결과
--------------------
gb1 gb2 gb3
--------------------
12 N36 null
-- 원하는결과
--------------------
gb1 gb2 gb3
--------------------
null 12 N36
생각처럼은 안 되네요.
WITH T AS (SELECT '|12|N36' GB FROM DUAL) SELECT TRIM(BOTH '^' FROM REGEXP_SUBSTR(REPLACE(GB,'|','^|^'),'[^|]+',1,1)) AS GB1 , TRIM(BOTH '^' FROM REGEXP_SUBSTR(REPLACE(GB,'|','^|^'),'[^|]+',1,2)) AS GB2 , TRIM(BOTH '^' FROM REGEXP_SUBSTR(REPLACE(GB,'|','^|^'),'[^|]+',1,3)) AS GB3 FROM T;