4
我從表中選擇記錄並將結果作爲單行CSV列表返回。
我正在使用Oracle 10 release 2
。這裏是我的查詢:輸出大CSV行的字符串聚合溢出`replace`
SELECT column1,rtrim
(replace
(replace
(xmlagg(xmlelement("x", column2)).getclobval(),
'<x>',
NULL),
'</x>',
','),
',')
FROM table1
group by column1;
我的問題是,當字符串大於4000字符它失敗,因爲替換功能。我可以通過刪除替換函數並使用我的編程語言中的函數來解決此問題。
我想修改查詢,以便我可以指定CSV列表中每行返回多少個元素。因此,例如,使用上述查詢將返回包含CSV列表中10000個元素的行(不包括替換函數)。
修改的查詢將返回10行1000個元素(10行可以修改)。 例如原來查詢將返回:
1234,1234,1234,1234,1234,5678,3456,12344,654677,
修訂後的查詢會是這樣的
1234,1234,1234,1234,
1234,5678,3456,12344,
654677
我不能使用collect
功能,但什麼都應該是不錯的,只是SQL如果可能的話
感謝以上這是非常好的,如果我想指定查詢返回的每行元素的數量而不是行數,我將如何去解決這個問題,所以它會返回任意數量的行,每行元素(再次10將是可以修改的)。感謝 – ward
感謝戴夫以上的添加到查詢也適用。這很棒 – ward