在PL sql Oracle中使用新行和外接程序数组拆分字符串

在PL sql Oracle中使用新行和外接程序数组拆分字符串,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个字符串,如下所示: 你好,汤姆 你在哪里 你叫什么名字 我想用新行拆分上面的字符串并添加到数组中,如下所示 : [你好,汤姆,你在哪里,你叫什么名字] 这在PL/SQL中可能吗?既然你已经跟汤姆打过招呼,为什么还要再问他一次名字 无论如何。。对您可以对Oracle中由CHR(10)-换行符分隔的字符串使用标准的字符串拆分操作。然后使用CAST和COLLECT函数将其转换为数组。在这里,我使用了Oracle的内置集合sys.OdciVarchar2List。在PL/SQL块中,您可以将其大

我有一个字符串,如下所示:

你好,汤姆

你在哪里

你叫什么名字

我想用新行拆分上面的字符串并添加到数组中,如下所示 :

[你好,汤姆,你在哪里,你叫什么名字]


这在PL/SQL中可能吗?

既然你已经跟汤姆打过招呼,为什么还要再问他一次名字

无论如何。。对您可以对Oracle中由
CHR(10)
-换行符分隔的字符串使用标准的字符串拆分操作。然后使用
CAST
COLLECT
函数将其转换为数组。在这里,我使用了Oracle的内置集合
sys.OdciVarchar2List
。在PL/SQL块中,您可以将其大容量收集到任何可以保存字符串元素的适当集合类型中


Kaushik可能是对的,我可能是错的,但这正是我所理解的(通过查看OP所包含的方括号,作为期望的结果):


@塔潘莫汉蒂:不客气。请阅读:如果我的答案有效,请接受。阅读stackoverflow.com/help/someone-answers了解如何操作。
WITH t (s)
AS (
    SELECT 'Hello Tom
Where are you
What''s your name'
    FROM DUAL
    )
SELECT CAST ( COLLECT ( REGEXP_SUBSTR(s, '[^' || CHR(10)|| ']+', 1, LEVEL) )
                       AS sys.OdciVarchar2List )  as collection
FROM t CONNECT BY LEVEL <= REGEXP_COUNT(s, '[^' || CHR(10)|| ']+')
|                               COLLECTION |
|------------------------------------------|
| Hello Tom,Where are you,What's your name |
SQL> WITH t (s)
  2  AS (SELECT 'Hello Tom
  3  Where are you
  4  What''s your name'
  5      FROM DUAL
  6      )
  7  select replace(s, chr(10), ',') result
  8  from t;

RESULT
----------------------------------------
Hello Tom,Where are you,What's your name

SQL>