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
К сожалению, я не понял, вопрос был размещен. С тех пор он был переформатирован.
В Oracle нет встроенной функции Split, которая вам нужна. Следующая ссылка показывает, как создать пользовательскую функцию Split:
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