当前位置: 首页 > 面试题库 >

连接到Oracle中的拆分字符串列

钱瑞
2023-03-14
问题内容

我的数据库中有一列,其中包含4个字段,以“ \”定界字符串。

在我的报告中,我根据需要分别拆分了这些字段。

我还需要单独使用这些字段作为针对另一个表的条件。

我尝试过的事情: 临时表:

CREATE GLOBAL TEMPORARY TABLE pfcc
   ON COMMIT PRESERVE ROWS 
   AS select REGEXP_SUBSTR(s, '[^\]+', 1, 1) colA,
       REGEXP_SUBSTR(s, '[^\]+', 1, 2) colB,
       REGEXP_SUBSTR(s, '[^\]+', 1, 3) colC,
       REGEXP_SUBSTR(s, '[^\]+', 1, 4) colD
from (select delimited s from products
                        where productid = 1)

然后将其与另一个表连接。

select * from pfcc tmp
inner join lineitems gch 
    on gch.Line = tmp.colA
    AND gch.productB = tmp.colB
    AND gch.productC = tmp.colC

我也尝试立即加入而不将值存储在表中:

select REGEXP_SUBSTR(s, '[^\]+', 1, 1) colA,
       REGEXP_SUBSTR(s, '[^\]+', 1, 2) colB,
       REGEXP_SUBSTR(s, '[^\]+', 1, 3) colC,
       REGEXP_SUBSTR(s, '[^\]+', 1, 4) colD
from (select delimited s from products
                        where productid = 1) tmp
inner join lineitems gch 
    on gch.Line = tmp.colA
    AND gch.productB = tmp.colB
    AND gch.productC = tmp.colC

我想 避免 使用临时表,并使其类似于第二种方法。如果这是不可避免的,那就这样吧。

有人对此有解决方案吗?

谢谢,JFIT


问题答案:

我认为这是您想要的查询:

select gch.Line, gch.productB, gch.productC,
       REGEXP_SUBSTR(p.delimited, '[^\]+', 1, 4)
from  products p inner join
      lineitems gch 
      on gch.Line = REGEXP_SUBSTR(p.delimited, '[^\]+', 1, 1) and
         gch.productB = REGEXP_SUBSTR(p.delimited, '[^\]+', 1, 2) and
         gch.productC = REGEXP_SUBSTR(p.delimited, '[^\]+', 1, 3)
where p.productid = 1;

您既不需要子查询,也不需要临时表。



 类似资料:
  • 本文向大家介绍C#程序拆分和连接字符串,包括了C#程序拆分和连接字符串的使用技巧和注意事项,需要的朋友参考一下 要在C#中拆分和连接字符串,请使用and方法。让我们说以下是我们的字符串- 为了分割字符串,我们将使用方法- 现在开始联接,使用方法并联接字符串的其余部分。在这里,我们使用方法跳过了字符串的一部分- 示例 您可以尝试在C#中运行以下代码以拆分和连接字符串。 输出结果

  • 问题内容: 我在Oracle数据库中有一个字符串,我的字符串是:’bbb; aaa; qqq; ccc’ 我用正则表达式来分割我的字符串: 我想按顺序拆分它,我总是希望下面的输出: 因为subString的顺序对我来说非常重要。但是此查询的结果不正确: 问题答案: 您不需要a即可获得结果;此外,要获得给定顺序的结果,您所需要做的只是一个子句:

  • 本文向大家介绍Java中拆分和拼接字符串,包括了Java中拆分和拼接字符串的使用技巧和注意事项,需要的朋友参考一下 要在Java中拆分和连接字符串,请使用以下示例中的split和join方法- 示例 输出结果 一个名为Demo的类包含主函数。这里定义了一个字符串对象,并根据直到最后一个单词的值对其进行分割。循环遍历一个for循环,并根据该值分割字符串。同样,使用join函数连接字符串。相关消息显示

  • 问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数

  • 我对神谕主题有意见 我们有一个表,其中一列存储由逗号(,)ex分隔的数据 我们需要能够分离这个值,并得到这样的结果 但是这个列的数量并不是固定的,一些类型可能是不同的数据湖,我们需要动态响应,例如 如果我为1运行进程,结果与以前一样 但是如果我为类型2运行它,结果应该如下 我们可以将项目字段转换为varchar2表,但我们找不到如何将其转换为使用游标。任何想法?非常感谢!对不起,如果我的英语不被理

  • 这个问题类似于我之前的问题拆分一个包含破折号和减号的字符串。但我问错了,然后它得到了稍微不同的语义,人们从这个角度回答(包括)。因此,与其修改这个问题,我认为最好是提出一个新问题。 我必须拆分一个包含连字符-减号和减号的字符串。我尝试根据Unicode字符(https://en.wikipedia.org/wiki/Hyphen#Unicode)进行拆分,但考虑到减号与连字符-减号相同。有什么方法