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 个字符的限制...