Oracle在一行中有多个值

时间:2015-03-15 17:20:27

标签: oracle oracle11g

我有这个查询在我的表中插入4个新行。我不想要这个。我想插入一行并使用,分隔值。我怎么能这样做?

INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE) 
     SELECT 'Datafile paths', name, 'select name from V$DATAFILE', SYSDATE 
     from V$DATAFILE;

2 个答案:

答案 0 :(得分:1)

尝试使用“||”连接所有值像:

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;

如果只需要选择一行,则需要指定where子句,如:

INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE) 
 SELECT 'Datafile paths', name, 'select name from V$DATAFILE', SYSDATE 
 FROM V$DATAFILE
 WHERE myfield = 'foobar';

答案 1 :(得分:1)

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