안녕하세요 문자에서 특정 문자열을 추출하고싶습니다(아까 질문에 이어서) 0 7 701

by 누구보다빠르게 [PL/SQL] 문자열추출 [2018.11.14 17:15:32]


안녕하세요 아까 질문에 이어서 질문을 드립니다.

코코팜 250ml에서

250ml을 추출하려면

REGEXP_SUBSTR('코코팜 250ml','[0-9]+')||'ml'

이렇게 뽑으면 되는데

코코팜 200 250ml

이렇게 되있을 때, 250ml 추출하려면 어떻게할까요?

문자열을 뒤집어서 REGEXP_SUBSTR을 써야 할까요?.. 여러가지 해보는데 잘 안되서

다시 한 번 도움을 요청합니다

감사합니다 !

 

by 누구보다빠르게 [2018.11.14 17:37:04]

REVERSE에서 끝에 숫자를 찾아

다시 역으로 REVERSE로 해서 방법을 찾았습니다

감사합니다!


by 신이만든지기 [2018.11.14 17:43:16]

처음에 알려드린 방법으로 해도 될텐데요;;

SELECT REGEXP_SUBSTR('코코팜 200 250ml', '[0-9]+ml') FROM DUAL

 


by 마농 [2018.11.14 17:45:01]

아까 질문에 신이만든지기님께서 쉬운 답변 달아드렸는데...
왜 쉬운 거 놔두고 어렵게 풀고 계신 거죠?


by 누구보다빠르게 [2018.11.14 17:55:01]

아 제가 잠시 착각을 했었습니다 ㅠㅠ 

지적 감사합니다


by 마농 [2018.11.14 17:58:05]

아! 혹시? 숫자만 뽑고 싶은 건가요?

WITH t AS
(
SELECT '코코팜 250ml' v FROM dual
UNION ALL SELECT '코코팜 200 250ml' FROM dual
)
SELECT v
     , REPLACE(REGEXP_SUBSTR(v, '[0-9]+ml'), 'ml') x
  FROM t
;

 


by 우리집아찌 [2018.11.14 17:39:09]
-- 그냥 
WITH T AS (
SELECT '코코팜 200 250ml' TXT FROM DUAL UNION ALL
SELECT '코코팜 200 250ml 100 ' TXT FROM DUAL

)

 SELECT TXT
      , REGEXP_SUBSTR(TXT,'[^ ]+', 1, LV ) STR
   FROM T A
      ,(SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 5 ) B 
  WHERE REGEXP_SUBSTR(TXT,'[^ ]+', 1, LV ) LIKE '%ml'
    
    

 


by 누구보다빠르게 [2018.11.14 17:55:15]

답변 감사합니다

LV 넣어서 해보는 것도 참고해보겠습니다 !

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입