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 41545 게시물 읽기
No. 41545
파라미터 분리하기
작성자
궁금
작성일
2018-04-04 10:42:41
조회수
826

WITH T AS (

SELECT 'A=1;B=2;C=3;D=4' DT FROM DUAL

UNION ALL

SELECT 'C=5A=7;D=6;B=2' DT FROM DUAL

UNION ALL

SELECT 'C=7;D=2;A=9;C=4' DT FROM DUAL

) SELECT * FROM T

 

컬람하나에 ;로 파라미터가 한꺼번에 있습니다.

A B C D 순서대로있으면 쪼개서 넣겠는데 저렇게 순서가 뒤죽박죽입니다.

이데이터를 SELECT 하여 INSERT 할때 A는 A컬럼에 B는 B컬럼에 C는 C컬럼에 D는 D컬럼에

입력하려면 어떻게해야하나요?

 

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

 정규표현식을 이용하면 가능합니다.

A는 값만 나오도록 B,C,D는 참고하시라고 B=값 형식으로 보이도록 했습니다.

 

 

 

SELECT 'A=1;B=2;C=3;D=4' DT FROM DUAL

UNION ALL

SELECT 'C=5;A=7;D=6;B=2' DT FROM DUAL

UNION ALL

SELECT 'B=7;D=2;A=9;C=4' DT FROM DUAL

SELECT regexp_substr(regexp_substr(dt, 'A=([[:digit:]]+)',1,1), '([[:digit:]]+)',1,1) A 

       ,regexp_substr(dt, 'B=[[:digit:]]+',1,1) B 

       ,regexp_substr(dt, 'C=[[:digit:]]+',1,1) C 

       ,regexp_substr(dt, 'D=[[:digit:]]+',1,1) D 

FROM T

       

박인호(paerae)님이 2018-04-04 11:44:53에 작성한 댓글입니다.

1. 두번째 행 자료의 C 와 A 사이에 세미콜롬(;)이 없네요?

원래 없을 수도 있는건지? 질문하다가 오타 난건지?

2. 세번째 행 자료엔 C 가 두개네요?

원래 중복 될 수 있는 건지? 질문하다가 오타 난건지?

중복 가능하다면? 3행의 C 값은 결과가 어떻게 나와야 하는지?

마농(manon94)님이 2018-04-04 15:54:31에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41551쿼리 질문 드립니다. [4]
왕초보
2018-04-16
740
41549다수의 FK포함된 테이블생성 [1]
Newbie
2018-04-14
716
41546기준일자별 쿼리 문의드립니다. [2]
량디
2018-04-06
811
41545파라미터 분리하기 [2]
궁금
2018-04-04
826
41544cursor 문의 (마농님 부탁드립니다 !) [2]
Tevere
2018-04-02
898
41543UNION 대신 사용할 방법 [12]
초보자
2018-03-29
1101
41541세로 데이터를 가로로 만들 때 [4]
초보자
2018-03-27
1097
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2018 DSN, All rights reserved.
작업시간: 0.087초, 이곳 서비스는
	PostgreSQL v10.4로 자료를 관리합니다