Oracle 쉼표 분리 열 전환 실현 방법

1281 단어 Oracle열 전 행
그러면 현재 권한 번 호 를 지정 하면 이 권한 을 사용 한 사용자 집합 을 검색 하려 면 쉼표 로 구 분 된 여러 권한 번호 에서 제 시 된 권한 번호 와 일치 해 야 합 니 다.like 를 사용 하면 하 나 는 효율 이 높 지 않 고,다른 하 나 는 정확 하지 않다.그래서 쉼표 로 열 을 나 누 어 줄 을 바 꾸 는 방법 을 사용 했다.현재 이 방법 은 Oacle 데이터베이스 에서 만 사용 할 수 있 습 니 다.이 방법 은 sql 문장 만 있 으 면 열 전 행 을 실현 할 수 있다.
다음은 이 방법의 예 시 를 제시한다.
select a,b,c from(with test as (select 'aaa' a,'bbb' b,'1,2,3' c from dual)select a,b,substr(t.ca,instr(t.ca, ',', 1, c.lv) + 1,instr(t.ca, ',', 1, c.lv + 1) - (instr(t.ca, ',', 1, c.lv) + 1)) AS c from (select a,b,',' || c || ',' AS ca,length(c || ',') - nvl(length(REPLACE(c, ',')), 0) AS cnt FROM test) t,(select LEVEL lv from dual CONNECT BY LEVEL <= 100) c where c.lv <= t.cnt ) 
위 코드 를 실행 합 니 다.결 과 는 다음 그림 과 같 습 니 다.

아 날로 그 데이터 열 c 의 내용 인'1,2,3'은 세 줄 로 바 뀌 었 고 앞의 두 열의 내용 은 동시에 첨부 되 었 다.실제 운용 할 때 는
select'aaa'a,'bbb'b,'1,2,3'c from dual 을 실제 변환 해 야 할 데이터 시트 의 필드 로 바 꾸 면 됩 니 다.그 중에서 c 필드 는 쉼표 구분 내용 을 저장 하 는 필드 로 변환 해 야 합 니 다.아래 의 내용 은 모두 변경 할 필요 가 없다.그 중에서'LEVEL<=100'의 숫자 100 은 일치 하 는 필드 내용 에 쉼표 가 나타 나 는 횟수 를 나타 내 므 로 스스로 변경 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기