문자열 제거 질문 드립니다. 0 5 2,305

by InsideCore [SQL Query] REGEXP_SUBSTR [2012.05.07 16:14:52]


안녕하세요.

아래 문장 고수님들은 어떻게 처리 하시는지요??

WITH T AS(
                   SELECT 'SA516-70 + SA240-316L CLAD'   AS MATERIAL FROM DUAL
                )
SELECT *
     FROM T ;

결과
--------------------------------------------------------------------------------------
MATERIAL
--------------------------------------------------------------------------------------
SA516-70 + SA240-316L CLAD
--------------------------------------------------------------------------------------

위에 결과값을 아래와 같이 하려고 합니다.
--------------------------------------------------------------------------------------
MATERIAL          CLAD
--------------------------------------------------------------------------------------
SA516-70          SA240-316L
--------------------------------------------------------------------------------------

저는 아래와 같이 SQL를 작성했는데요.
혹시 좀더 SIMPLE하게 작성은 안될까요??
고수님들 조언 부탁드립니다.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT TRIM(REPLACE(SUBSTR(MATERIAL , 1 , INSTR(REGEXP_REPLACE(MATERIAL,'[+]','+'), '+', -1)),'+' ,''))  AS  MATERIAL          ,
              TRIM(REPLACE(TRIM(REPLACE(SUBSTR(MATERIAL ,INSTR(REGEXP_REPLACE(MATERIAL,'[[+]]','+'), '+', -1)),'+','')),'CLAD','')) AS CLAD
FROM T ;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
by 손님 [2012.05.07 16:34:03]
SELECT REGEXP_SUBSTR(MATERIAL, '[^ + ]+', 1, 1) MATERIAL
, REGEXP_SUBSTR(MATERIAL, '[^ + ]+', 1, 2) CLAD
FROM T

by 손님 [2012.05.07 16:34:24]
SELECT REGEXP_SUBSTR(MATERIAL, '[^ + ]+', 1, 1) MATERIAL
, REGEXP_SUBSTR(MATERIAL, '[^ + ]+', 1, 2) CLAD
FROM T

by InsideCore [2012.05.07 16:35:12]
문장을 아래와 같이는 단순화 시켰습니다.

다른 방법은 없을까요??

SELECT TRIM(REPLACE(SUBSTR(MATERIAL , 1 , INSTR(MATERIAL,'+', -1)),'+' ,''))              AS MATERIAL ,
              TRIM(REPLACE(SUBSTR(MATERIAL ,     INSTR(MATERIAL,'+', -1) + 1),'CLAD',''))   AS CLAD  
    FROM T;

by 마농 [2012.05.07 17:07:35]
질문자께서 올리시는 쿼리의 함수사용이...
전반적으로 불필요하고 의미가 불분명하게 사용된 부분이 많네요.
SELECT SUBSTR(material, 1, INSTR(material, '+') - 2) material
     , REPLACE(SUBSTR(material, INSTR(material, '+') + 2), ' CLAD') clad
  FROM t
;

by InsideCore [2012.05.08 10:00:08]
답변 주신 모둔 분들께 정말 감사드립니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입