使用换行拆分字符串并在PL sql Oracle中添加数组

时间:2018-04-22 15:03:57

标签: sql oracle plsql

我有一个如下字符串:

  

你好汤姆

     

你在哪里

     

你叫什么名字

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

  

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

这可能在PL / SQL中吗?

2 个答案:

答案 0 :(得分:3)

为什么在你向他打招呼时再次问汤姆的名字?

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

SQL Fiddle

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)|| ']+')

<强> Results

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

答案 1 :(得分:0)

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

function readImage(file) {
  //wrap readImage body into a promise
  return new Promise((resolve) => {
    var reader = new FileReader();
    reader.addEventListener("load", function () {

      var image = new Image();
      image.addEventListener("load", function () {
        elPic.appendChild(this);
        //resolve the promise after the child is appended so the caller would know when to start the next one
        resolve();
      });

      image.src = useBlob ? window.URL.createObjectURL(file) : reader.result;
    });

    reader.readAsDataURL(file);
  });
}

elBrowse.addEventListener("change", function () {

  var files = this.files; {
    //start the chain
    var chain = Promise.resolve();
    for (var i = 0; i < files.length; i++) {
      //use let to have properly scoped variable
      let file = files[i];
      if ((/\.(png|jpeg|jpg|gif)$/i).test(file.name)) {
        //append functions to call to the chain
        chain = chain.then(() => readImage(file));
      }
    }
  }
});