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 41281 게시물 읽기
No. 41281
특정컬럼 안에 있는 데이터 변환
작성자
워즈(kwakdong)
작성일
2016-11-10 10:13ⓒ
2016-11-10 10:20ⓜ
조회수
5,991

with t as (

select '1 2 3 4 ' as A from dual union all 

select '1 ' from dual union all

select '2 ' from dual union all

select '2 3 ' from dula

)

 

with s as (

select '1'  as old, 'O' as new from dual union all 

 

select '2', 'S' from dual union all

select '3', 'T' from dual union all

select '4', 'F' from daul

)

 

 

원하는 데이터  1=O, 2=S, 3=T, 4=F 로 변환해서 조회되게, 즉 t 테이블 컬럼의 데이터가 s 테이블 new 값으로 변환입니다.

 

select 'O S T F '  from t

select 'O '

select 'S ;

select 'S T '

 

regexp_replace 함수를 잘 사용하면 될 것 같은데...도움 부탁드립니다.

 

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

WITH t AS
(
SELECT '1 2 3 4 ' a FROM dual
UNION ALL SELECT '1 ' FROM dual
UNION ALL SELECT '2 ' FROM dual
UNION ALL SELECT '2 3 ' FROM dual
)
, s AS
(
SELECT '1' old, 'O' new FROM dual
UNION ALL SELECT '2', 'S' FROM dual
UNION ALL SELECT '3', 'T' FROM dual
UNION ALL SELECT '4', 'F' FROM dual
)
SELECT t.a
     , LISTAGG(s.new, ' ') WITHIN GROUP(
       ORDER BY INSTR(' '||t.a, ' '||s.old||' '))||' ' b
  FROM t
     , s
 WHERE INSTR(' '||t.a, ' '||s.old||' ') > 0
 GROUP BY t.a
;

마농(manon94)님이 2016-11-10 12:26에 작성한 댓글입니다.

감사합니다.

많이 배우고 있습니다.

워즈(kwakdong)님이 2016-11-10 14:58에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41285중복관련 쿼리 질문입니다 [1]
김홍석
2016-11-18
6112
41284connect by 이후 조인할때 order by 깨지는것 문의드려요... [4]
서기라
2016-11-17
6245
41282Java에서, 다른 pc에 있는 dbms연결이 안됩니다. 뭐가 문제죠? [1]
최현일
2016-11-13
5736
41281특정컬럼 안에 있는 데이터 변환 [2]
워즈
2016-11-10
5991
41280마농님 도와주세요 프로시져에서 막히네요 ㅠㅠ loop관련 도움 주세요 ㅠㅠ [1]
최종욱
2016-11-09
6094
41279마이그래이션(?)관련 질문입니다.
서범석
2016-11-08
5678
41278start with 구문 Update 사용 문의 [8]
박재덕
2016-11-08
7468
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다