如何在 oracle 中执行 c# string.split()

Posted

技术标签:

【中文标题】如何在 oracle 中执行 c# string.split()【英文标题】:How to do the c# string.split() in oracle 【发布时间】:2020-03-20 19:22:17 【问题描述】:

如果存在,如何从字符串的乞求中删除某些单词,如DUMPRJ,然后根据字符_ 拆分字符串并获取第二部分。

例如,如果我们采取 DUM_EI_AO_L_5864_Al Meena Tower 我需要以AOEI_AE_L_5864_Al radha Tower 作为AE 获得答案

【问题讨论】:

这些都是我已经检查过的并且非常复杂。我需要一个满足我在问题中提到的两个条件的简单答案 您想要查询还是 C# 代码?您是否尝试过在 oracle 查询上执行此操作?当您 1. 展示努力和 2. 通过查询示例展示您想要的内容时,这个问题肯定会得到回答。一旦您提出查询,您的问题可能归结为“LinQ 中的这个 oracle 函数是什么?”。 【参考方案1】:

替换要删除的前缀,然后找到第一个和第二个下划线的索引,然后找到这两个分隔符之间的子字符串:

Oracle 设置

CREATE TABLE your_table ( value ) AS
SELECT 'DUM_EI_AO_L_5864_Al Meena Tower' FROM DUAL UNION ALL
SELECT 'EI_AE_L_5864_Al radha Tower' FROM DUAL

查询

SELECT value,
       SUBSTR( replaced_value, first_separator + 1, second_separator - first_separator - 1 )
         AS second_term
FROM   (
  SELECT value,
         replaced_value,
         INSTR( replaced_value, '_', 1, 1 ) AS first_separator,
         INSTR( replaced_value, '_', 1, 2 ) AS second_separator
  FROM   (
    SELECT value,
           REPLACE(
             REPLACE(
               value,
               'PRJ_'
             ),
             'DUM_'
           ) AS replaced_value
    FROM   your_table
  )
)

输出

价值 |第二期 :-------------------------------- | :---------- DUM_EI_AO_L_5864_Al Meena 塔 | AO EI_AE_L_5864_Al radha 塔 | AE

查询 2

你也可以使用正则表达式:

SELECT value,
       REGEXP_SUBSTR( value, '(DUM_|PRJ_)?.*?_(.*?)_', 1, 1, NULL, 2 ) AS second_term
FROM   your_table

输出

价值 |第二期 :-------------------------------- | :---------- DUM_EI_AO_L_5864_Al Meena 塔 | AO EI_AE_L_5864_Al radha 塔 | AE

db小提琴here

【讨论】:

以上是关于如何在 oracle 中执行 c# string.split()的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET MVC Core(C#) 中执行 Oracle 存储过程 (PL/SQL)

如何使用c#执行返回多个游标的oracle存储过程

无法将“System.String”类型的对象转换为 C# 中的“Oracle.DataAccess.Client.OracleParameter”类型

如何在 C# 中对数组执行集合减法?

通过Oracle函数SQL实现C# String.Format字符串格式化功能

C# 用command.ExecuteNonQuery() 执行update语句界面卡死,也不报错!??使用的是oracle数据库