0

我有一张看起来像这样的桌子。

 `referenceID, IP1, IP2, IP3, subnetmask`

我现在需要将具有特定 referenceID 的 IP 放入 Textarea 或 Displayonly 字段,并在前后添加一些纯文本

例如:

*/ 
*/this goes infront of the ips  
<ip1><ip2><ip3><subnet> 
<2ip1><2ip2><2ip3><2subnet>  
*/this text comes after the ips`

问题是,我想不出办法将所有字符串和 ips 选择到 textarea 中(或仅显示)。

到目前为止我尝试过的方法,只是导致诸如“列数错误”或 PL/SQL 要求我选择一个位置以在某处选择这些 INTO 之类的错误。

将不胜感激任何解决方案或帮助。

4

1 回答 1

0

您可以这样尝试(基于此答案):

SELECT 'this goes infront of the ips' || 
       replace(SYS_CONNECT_BY_PATH (x_text, '~'), '~', CHR(10)) ||
       CHR(10) || 'this text comes after the ips' AS textarea
  FROM (SELECT IP1 || ',' || IP2 || ',' || IP3 || ',' || subnetmask AS x_text,
               ROW_NUMBER () OVER (ORDER BY referenceID) AS x_rownumber,
               COUNT (*) OVER () AS x_count
          FROM yourtable
          WHERE referenceID > 0)
WHERE x_rownumber = x_count
START WITH x_rownumber = 1
CONNECT BY x_rownumber = PRIOR x_rownumber + 1

如果您使用的是 Oracle 11.2 或更高版本,则应使用以下内容(基于另一个答案):

SELECT 'this goes infront of the ips' || CHR(10) ||
       LISTAGG(IP1 || ',' || IP2 || ',' || IP3 || ',' || subnetmask, CHR(10)) 
       WITHIN GROUP (ORDER BY referenceID) ||
       CHR(10) || 'this text comes after the ips' AS textarea
FROM yourtable
WHERE referenceID > 0

注意:referenceID > 0这只是一个示例子句,用于将您的查询限制为特定的 referenceID,yourtable应替换为表的名称。

于 2016-06-28T10:57:28.507 回答