Name Nameid
P,q,r,s,t One
A,b,c Two
D,e Three
이 내 소스 테이블이지만, 나는이열을 분할하는 방법?
Name Nameid
P One
Q One
R One
S One
T One
A Two
B Two
C Two
D three
Name Nameid
P,q,r,s,t One
A,b,c Two
D,e Three
이 내 소스 테이블이지만, 나는이열을 분할하는 방법?
Name Nameid
P One
Q One
R One
S One
T One
A Two
B Two
C Two
D three
죄송처럼 내 목표 테이블이 내가 게시 된 질문을 이해하지 못합니다. 그 이후로 다시 포맷되었습니다.
오라클에는 여기에 필요한 분할 기능이 내장되어 있지 않습니다. 다음 링크는 사용자 정의 분할 함수를 만드는 방법을 보여줍니다 : 당신은 유형을 만든 후에
http://srinisreeramoju.blogspot.com/2010/03/oracle-custom-split-function.html
을하고, 기능은 단순히로 부를 것이다 : 이런 경우
SELECT
Split(Name, ',') AS Name,
NameID
FROM
YourTable
, 나는 다른 방식으로 데이터를 저장하는 것이 더 우아 할 것이라고 생각한다.
프로그램에서 행을 삽입하는 경우 문자열을 거기에 분할하고 대신 몇 줄을 더 삽입하십시오.
가상 코드 예를 들어 보겠습니다.
number = "One"
many_letters = "P,Q,R,S,T".split(",")
for(letter in many_letters) {
insert_values(letter, number)
}
나는 이것이 그가 무엇을 요구했는지 확신하지 못합니다. 그러나 질문은 모호합니다. – vulkanino
네 말이 맞아. 그래도 잠재적 인 해결책이라고 생각합니다. – professorsloth
여기 here에서 해제 한 방법 :
SQL> CREATE TABLE t (name VARCHAR2(20), nameid VARCHAR2(10));
Table created.
SQL> INSERT INTO t VALUES ('P,q,r,s,t','One');
1 row created.
SQL> INSERT INTO t VALUES ('A,b,c' ,'Two');
1 row created.
SQL> INSERT INTO t VALUES ('D,e' ,'Three');
1 row created.
SQL> SELECT nameid
2 , REGEXP_SUBSTR (name, '[^,]+', 1, LEVEL) AS token
3 FROM t
4 CONNECT BY PRIOR nameid = nameid
5 AND REGEXP_INSTR (name, '[^,]+', 1, LEVEL) > 0
6 AND PRIOR DBMS_RANDOM.STRING ('p', 10) IS NOT NULL
7 ;
NAMEID TOKEN
---------- --------------------
One P
One q
One r
One s
One t
Three D
Three e
Two A
Two b
Two c
10 rows selected.
SQL>
침을 열? 때때로 나는 칼럼을 침을 뱉을 수 있었으면 좋겠다. – Taryn
중복 가능한 [여러 열을 분할] (http://stackoverflow.com/questions/3713107/split-column-to-multiple-rows) – APC