相关文章推荐
精明的冲锋衣  ·  C sharp 将object ...·  1 年前    · 
心软的香菜  ·  百度地图Android ...·  2 年前    · 
腼腆的小刀  ·  5353端口关闭-掘金·  2 年前    · 

oracle 分割字符串成多行

在 Oracle 数据库中,要将一个字符串分割成多行,可以使用 CONNECT BY LEVEL 和 SUBSTR 函数的组合来实现。

下面是一个例子:

假设我们有一个字符串 "A,B,C,D,E,F",我们想将它分割成多行。

我们可以使用以下 SQL 语句:

SELECT SUBSTR('A,B,C,D,E,F', INSTR('A,B,C,D,E,F', ',', 1, LEVEL) + 1, 
    INSTR('A,B,C,D,E,F', ',', 1, LEVEL + 1) - INSTR('A,B,C,D,E,F', ',', 1, LEVEL) - 1) AS value
FROM dual
CONNECT BY LEVEL <= LENGTH('A,B,C,D,E,F') - LENGTH(REPLACE('A,B,C,D,E,F', ',', '')) + 1;

上述 SQL 语句使用了以下函数和关键字:

  • SUBSTR: 提取字符串的一部分。
  • INSTR: 返回一个字符串中某个子串第一次出现的位置。
  • dual: Oracle 数据库中的一个虚拟表,用于执行单行查询。
  • CONNECT BY LEVEL: 用于生成一组序列号,这些序列号表示字符串中的每个逗号。
  • LENGTH: 返回一个字符串的长度。
  • REPLACE: 用一个新的字符串替换一个字符串中的所有指定字符。
  • 上述 SQL 语句的输出如下:

    VALUE
    -----
    

    通过这种方式,我们可以将一个包含多个值的字符串分割成多行,每行包含一个值。

  •