相关疑难解决方法(0)

是否有在PL/SQL中拆分字符串的功能?

我需要编写一个过程来规范化一个记录,该记录具有由一个char连接的多个标记.我需要获取这些标记分割字符串并将每个标记作为新记录插入表中.Oracle是否有类似"拆分"功能的东西?

string oracle plsql split tokenize

48
推荐指数
7
解决办法
19万
查看次数

如何在PL/SQL中解析逗号分隔的字符串?

我在PL/SQL脚本中有一个逗号分隔的字符串(例如data:='a,b,c,d,e'),我需要在脚本中解析.

我想遍历字符串并处理每个项目.就像一个'foreach'循环.

这可能在PL/SQL中吗?有人能指点我一些代码吗?

oracle plsql stored-procedures plsqldeveloper

16
推荐指数
1
解决办法
6万
查看次数

oracle - 将oracle表中的多个逗号分隔值拆分为多行

我有oracle拆分查询的问题.

在使用oracle查询中的connect by和regular expression将逗号分隔数据拆分为多行时,我获得了更多的重复行.例如,实际上我的表有150行,在那两行中有逗号分隔的字符串,所以整体上我只得到155行,但我得到2000行.如果我使用distinct其工作正常但我不想在查询结果中重复行.

我尝试了以下查询,但它在查询结果中生成重复的行:

WITH CTE AS (SELECT 'a,b,c,d,e' temp,1 slno  FROM DUAL
              UNION 
              SELECT 'f,g',2 from dual
              UNION 
               SELECT 'h',3 FROM DUAL)

SELECT TRIM(REGEXP_SUBSTR( TEMP, '[^,]+', 1, LEVEL)) ,SLNO FROM CTE 
CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(temp, '[^,]+')) + 1
Run Code Online (Sandbox Code Playgroud)

编辑

上面的select查询只能拆分单个逗号分隔的字符串,但是,当在具有多行的表上执行时,它会生成重复的.如何限制重复的行?

regex sql oracle split

5
推荐指数
2
解决办法
4万
查看次数

如何在Oracle中拆分逗号分隔的字符串

如何使用SUBSTR和拆分Oracle中逗号分隔的字符串INSTR.

字符串'20 .4,12.5,3.5,0.2,0.2'.

我尝试使用下面的代码,但我无法在第二个逗号后得到该值.

SELECT substr('20.4,12.5,3.5,0.2,0.2',0,instr('20.4,12.5,3.5,0.2,0.2',',')-1) 
value FROM dual   -- 1. 20.4
Run Code Online (Sandbox Code Playgroud)

对于第二个值,我在第二个逗号后得到整个字符串.

SELECT substr('20.4,12.5,3.5,0.2,0.2',instr('20.4,12.5,3.5,0.2,0.2',',')+1,instr('20.4,
12.5,3.5,0.2,0.2',',',2,2)-1) st FROM dual   -- result : 12.5,3.5,
Run Code Online (Sandbox Code Playgroud)

我想要每个逗号之后的值,比如

20.4

12.5

3.5等等.

string oracle substr

1
推荐指数
1
解决办法
2万
查看次数

Oracle-根据列值将单行拆分为多行

我有这样的桌子

parent_item  child_item  quantity
          A           B         2
          A           C         3
          B           E         1
          B           F         2
Run Code Online (Sandbox Code Playgroud)

并希望根据数量将其分成多行

parent_item  child_item  quantity
         A            B         1
         A            B         1
         A            C         1
         A            C         1
         A            C         1
         B            E         1
         B            F         1
         B            F         1

The column quantity (1) is not really necessary.
Run Code Online (Sandbox Code Playgroud)

我可以在/ by-level的帮助下生成一些东西,但是对于大型表来说非常慢。我对/ by-connect的连接不是很熟悉,但这似乎可行,尽管我无法真正解释:

select distinct parent_item, level LEVEL_TAG, child_item, level||quantity
FROM table
CONNECT BY quantity>=level
order by 1 asc;
Run Code Online (Sandbox Code Playgroud)

我发现了类似的问题,但在大多数情况下,topicstarter希望将定界的列值拆分为多行(Oracle- 将单行拆分为多行

解决此问题的最有效方法是什么?

谢谢

sql oracle split

0
推荐指数
1
解决办法
1万
查看次数