database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38982 게시물 읽기
No. 38982
특정문자로 나누는 방법을 알고 싶읍니다.
작성자
용가리(okman12)
작성일
2011-10-18 22:58
조회수
4,712

1234-4567

55-9900

-123

123-456 기타

궁금한 사항이 2가지인데요..

첫째는 - 와 숫자로만 구성된 컬럼인지 아닌지 구분을 했으면 합니다.

다른 하나는 숫자와 - 로만 구성됬을때,  컬럼 내용을 - 기준으로 두개로 나눴으면 합니다.

찾아보는데 쉽게 답이 안 나오네요..

답변 부탁드립니다.

이 글에 대한 댓글이 총 2건 있습니다.

WITH TMP AS(
 SELECT '1234-4567' AS STR FROM DUAL UNION ALL
    SELECT '55-9900' FROM DUAL UNION ALL
    SELECT '-123' FROM DUAL UNION ALL
    SELECT '123-456A' FROM DUAL
)
SELECT
 DECODE(REGEXP_INSTR(STR,'[^[:digit:] | \-]'),0,'Y','N') AS CUL_TYPE
    ,REGEXP_SUBSTR (STR, '[^-]+', 1, 1) F_STR
    ,REGEXP_SUBSTR (STR, '[^-]+', 1, 2) S_STR
FROM TMP;
 

고수님께서 더 멋진 쿼리 짜 주실거라 믿고 도움이나마 되시라고 댓글 답니다.

초보님이 2011-10-19 11:48에 작성한 댓글입니다. Edit

 

정규 표현식이 아닌 함수만으로 짜보았습니다. 9i 이상이면 돌아갑니다.

WITH TMP AS

        (SELECT '1234-4567' AS STR FROM DUAL

         UNION ALL

         SELECT '55-9900' FROM DUAL

         UNION ALL

         SELECT '-123' FROM DUAL

         UNION ALL

         SELECT '123-456A' FROM DUAL)

SELECT SUBSTR (str, 1, INSTR (str, '-') - 1)

      ,SUBSTR (str, INSTR (str, '-') + 1)

      ,NVL2 (REPLACE (TRANSLATE (str, '0123456789', '-'), '-'), '문자', '숫자')

FROM tmp

 

아무거나님이 2011-10-24 03:54에 작성한 댓글입니다.
이 댓글은 2011-10-24 03:59에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
389851997-07-16T19:20:30+01:00 형식으로 날짜를 넣고 싶습니다. [1]
조동건
2011-10-19
3619
38984v$session과 v$sqlarea의 join key 관련 문의 [1]
초보
2011-10-19
4550
38983함수사용법 조언 바랍니다.. (lpad, rpad) [2]
qa
2011-10-19
4238
38982특정문자로 나누는 방법을 알고 싶읍니다. [2]
용가리
2011-10-18
4712
38980trigger 질문 드립니다..꼭 부탁해요...^^;; 아 머리야... [1]
박정호
2011-10-18
4221
38978GREATEST에서 최대값 갯수 및 위치 알아내기 [3]
이장
2011-10-17
4146
38977전후 데이터의 시간차이 계산시 [2]
달타냥
2011-10-17
5585
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다