Oracle 一行中的多个值
Oracle multiple values in a single row
我有这个查询,它在我的 table 中插入了 4 个新行。我不想要这个。我想插入一行并用 ,
分隔值。我该怎么做?
INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE)
SELECT 'Datafile paths', name, 'select name from V$DATAFILE', SYSDATE
from V$DATAFILE;
尝试使用“||”连接所有值喜欢:
INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE)
SELECT 'Datafile paths' || name || 'select name from V$DATAFILE' || SYSDATE, 'Datafile paths' || name || 'select name from V$DATAFILE' || SYSDATE, 'Datafile paths' || name || 'select name from V$DATAFILE' || SYSDATE, 'Datafile paths' || name || 'select name from V$DATAFILE' || SYSDATE
from V$DATAFILE;
如果您只需要 select 一行,那么您需要指定 where 子句,例如:
INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE)
SELECT 'Datafile paths', name, 'select name from V$DATAFILE', SYSDATE
FROM V$DATAFILE
WHERE myfield = 'foobar';
在 Oracle 中,使用 LISTAGG
:
将多行聚合成单个逗号分隔值
INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE)
SELECT 'Datafile paths',
LISTAGG(name, ', ') WITHIN GROUP (ORDER BY name),
'select name from V$DATAFILE',
SYSDATE
FROM V$DATAFILE;
一如既往地注意 4000 个字符的限制...
我有这个查询,它在我的 table 中插入了 4 个新行。我不想要这个。我想插入一行并用 ,
分隔值。我该怎么做?
INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE)
SELECT 'Datafile paths', name, 'select name from V$DATAFILE', SYSDATE
from V$DATAFILE;
尝试使用“||”连接所有值喜欢:
INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE)
SELECT 'Datafile paths' || name || 'select name from V$DATAFILE' || SYSDATE, 'Datafile paths' || name || 'select name from V$DATAFILE' || SYSDATE, 'Datafile paths' || name || 'select name from V$DATAFILE' || SYSDATE, 'Datafile paths' || name || 'select name from V$DATAFILE' || SYSDATE
from V$DATAFILE;
如果您只需要 select 一行,那么您需要指定 where 子句,例如:
INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE)
SELECT 'Datafile paths', name, 'select name from V$DATAFILE', SYSDATE
FROM V$DATAFILE
WHERE myfield = 'foobar';
在 Oracle 中,使用 LISTAGG
:
INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE)
SELECT 'Datafile paths',
LISTAGG(name, ', ') WITHIN GROUP (ORDER BY name),
'select name from V$DATAFILE',
SYSDATE
FROM V$DATAFILE;
一如既往地注意 4000 个字符的限制...