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 38282 게시물 읽기
No. 38282
구분자가 있는 한필드의 결과를 세로로
작성자
짜집기
작성일
2010-12-30 18:05
조회수
5,554

안녕하세요.

예를 들어

select 'a|b|c' from dual

을 실행하면

a|b|c

결과가 나오는데.

이걸

3개의 row 로

a

b

c

이렇게 나오게 할 수 는 없나요?

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

 

구분자 '|'의 갯수가 가변적이라면 connect by 를 사용해야 할것 같네요

substr, instr, union all 을 사용하세요..

나그네님이 2010-12-30 18:16에 작성한 댓글입니다.
이 댓글은 2010-12-30 18:25에 마지막으로 수정되었습니다. Edit

전에 만들어 둔게 있는데요..

용도에 맞게 수정해서 쓰세요.. ^^;;

with tmp as (
    select 'aaa|bbbb|cccc' as str from dual
    union all select 'kk||zzz|aaaa|sdsd' from dual
)
select substr(str, idx_start+1, idx_end-idx_start-1 ) word
from (
   select
        str, idx_start,
        lead(idx_start) over(partition by str order by str, idx_start) idx_end
    from (
        select distinct str, instr(str, '|', c.no) idx_start
        from (select '|' || str || '|' str from tmp) a, copy_t c
        where c.no <= length(a.str)
    )
)
where idx_end is not null

전영식(garam111)님이 2010-12-31 09:58에 작성한 댓글입니다.
이 댓글은 2010-12-31 12:53에 마지막으로 수정되었습니다.

with tmp as (
    select 'aa|bbb|cccc' str from dual
    union all select 'dddd|eeeee|ff|ggg' from dual
)
SELECT  REGEXP_SUBSTR(str,'[^|]+',1,LEVEL) str
FROM (select rownum SEQ, str from tmp)
CONNECT BY  CONNECT_BY_ROOT SEQ = SEQ
and LEVEL <= LENGTH(str) - LENGTH(REPLACE(str,'|')) + 1

허재영(k26187116)님이 2010-12-31 12:52에 작성한 댓글입니다.

with tmp as (
    select 'aa|bbb|cccc' str from dual union all

    select 'dddd|eeeee|ff|ggg' from dual
)
select regexp_substr(a.str,'[^\|]+',1,b.lv) str
from (select str,regexp_count(str,'\|') + 1 cnt from tmp) a
     inner join (select level lv from dual connect by level <= 100) b
     on b.lv <= a.cnt
order by a.str,b.lv

123님이 2011-01-01 06:18에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
38285이런 경우에는 어떻게 처리하는게 빠를까요? [3]
조형래
2011-01-03
3004
38284START WITH... CONNECT BY 로 연결시킨 구문에서 특정값을 뽑아오고 싶습니다. [1]
전현욱
2010-12-31
4461
38283약간좀 이상한 결과 [2]
김흥수
2010-12-31
3140
38282구분자가 있는 한필드의 결과를 세로로 [4]
짜집기
2010-12-30
5554
38281analyze 후 느려짐 [6]
궁금이
2010-12-30
4125
38280쿼리 중복건 내 집계 [2]
쿼리OTL
2010-12-30
3783
38279고수님들 도와주세요!! 쿼리로 될 수 있을까요?? [1]
MyEeMa
2010-12-30
3464
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다