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

Oracle SQL获取第n个元素正则表达式

长孙波鸿
2023-03-14
问题内容

我正在尝试在Oracle中使用SQL获取逗号分隔的字符串中的第n个元素。

到目前为止,我有以下内容。

SELECT regexp_substr(
   '100016154,5101884LT00001,,,,,100000010892100000012655,L,SEI,5101884LT00001,1,SL,3595.03,00,2,N,N,G,N',
   '[^,]+',
   1,
   7)
FROM dual;

但是当元素为空时它不起作用,即,任何人都可以帮忙吗?


问题答案:

如果定界的值在逗号之间始终是字母数字,那么您可以尝试:

SELECT REGEXP_SUBSTR( <delimied_string>, '[[:alnum:]]{0,},', 1, 7 )
  FROM dual;

获取第七个值(包括结尾的逗号)。如果为空,则只需输入逗号(可以轻松删除)。

显然,如果您想要的值不是第七个,则将第四个参数值更改为想要的第n个出现率,例如

SELECT REGEXP_SUBSTR( <delimied_string>, '[[:alnum:]]{0,},', 1, <nth occurance> )
  FROM dual;

编辑:因为我喜欢REGEX,这是一个解决方案,它也删除了结尾的逗号

SELECT REPLACE(
          REGEXP_SUBSTR(<delimied_string>, '[[:alnum:]]{0,},', 1, <nth>), 
          ','
       )
  FROM dual;

希望能帮助到你



 类似资料:
  • 本文向大家介绍Elm从列表中获取第n个元素,包括了Elm从列表中获取第n个元素的使用技巧和注意事项,需要的朋友参考一下 示例 List不支持“随机访问”,这意味着要从列表中获取第五个元素要比第一个元素花费更多的工作,因此没有任何List.get nth list功能。必须从头开始(1 -> 2 -> 3 -> 4 -> 5)。 如果您需要随机访问,则使用随机访问数据结构(例如)可能会获得更好的结果

  • 返回数组的第n个元素。 使用 Array.slice() 获取数组的第 n 个元素。如果索引超出范围,则返回 [] 。省略第二个参数 n ,将得到数组的第一个元素。 const nthElement = (arr, n = 0) => (n > 0 ? arr.slice(n, n + 1) : arr.slice(n))[0]; nthElement(['a', 'b', 'c'], 1);

  • 我正在尝试使用一个Java正则表达式来提取数据。它符合我的数据,但我无法得到组数据。我正在尝试获取数据1,xmlAggregator,268803451,3。查看文档,我假设如果在\d+和\w+周围加上(),就会得到组中的数字和字符串。对如何更改正则表达式有什么建议吗? 字符串: Java代码: 输出: 希望得到:

  • 下面是一个函数,它将获得一个嵌套的ArrayList、index,并返回每个子列表的第n个元素。 例如。对于,,函数将返回 我已经找到了一个可以打印出来的版本: 如何将结果汇总成清单?

  • 问题内容: 可以说我有: 我想检索每个内部列表的第一个元素: 无需执行此操作(我当前的hack): 我敢肯定有一个班轮,但我真的不知道我在寻找什么。 问题答案: 只需将您的列表组合更改为: 要么: 或者,如果您要处理“适当的数组”: 和:

  • 我有3个正则表达式,但当模式匹配时执行相同的操作,所以我考虑将所有三个表达式合并为一个。我尝试了很多,但无法让“|”I.e”或“在我的正则表达式中工作 regex1:<代码>文本。替换(/([\u00A9-\u3299])/g,函数myFunction(x){…} regex2: regex3: 我试过这样做,但它不起作用regex: