验证 Oracle REGEXP_SUBSTR 中的子表达式

艺术巴吉

甲骨文 12cR1

我有一列像下面这样的长字符串

:Key1:Value1:Key2:Value2:Key3:Value3:Key4...…..

键是唯一的数字。这些值是任何字符串值,甚至可以是与任何其他键相同的数字。如果我给一个键,我必须得到它对应的值。例如,

lengthy_str_col := ':101:abc:12:43:43:101.4:4:bus'

为了获取密钥的值 43,我尝试了以下操作。

SELECT REGEXP_SUBSTR(lengthy_str_col,'(:([^:])+)(:[^:]+)') FROM DUAL;

这给了我第一个键值对':1:abc'现在我知道 43 是第三个键,我用

SELECT REGEXP_SUBSTR(lengthy_str_col,'(:([^:])+)(:[^:]+)', 1, 3, 'i', 4) FROM DUAL;

获取101.4key的值43

但是所需的密钥可以位于任何随机位置。有没有办法获取任何给定键的值?

维克多·斯特里比尤夫

您可以使用

select REGEXP_SUBSTR(':101:abc:12:43:43:101.4:4:bus', '^(:[^:]+:[^:]+)*?:43:([^:]+)', 1, 1, NULL, 2) as Result from dual

请参阅此正则表达式演示此正则表达式图

在此处输入图片说明

解释

  • ^ - 字符串的开始
  • (:[^:]+:[^:]+)*?- 零个或多个,但尽可能少地出现两次重复的:和 1+ 个字符,而不是:
  • :43: - 冒号之间的键
  • ([^:]+) - 第 2 组(结果):1 个或多个字符,而不是 :

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

oracle中的REGEXP_SUBSTR

oracle中REGEXP_SUBSTR中的混乱

用于 ORACLE DB 查询中的分号的 Regexp_Substr

Oracle SQL正则表达式RegExp_SubStr行尾(搜索文本中的chr(10)返回null

Oracle SQL regexp_substr

Oracle REGEXP_SUBSTR 拆分 URL

regexp_substr 与 Oracle 后面的外观

关于 Regexp_substr 的 Oracle 查询

使用regexp_substr时SQL缺少表达式

Oracle:instr+substr 代替 regexp_substr

如何在Oracle中的SQL中使用REGEXP_SUBSTR用自定义消息替换空插槽

使用regexp_substr在Oracle中按空格和字符分隔字符串作为定界符

Oracle REGEXP_SUBSTR 返回 NULL 作为值

Oracle:按级别和regexp_substr连接

Oracle SQL regexp_substr数字提取行为

如何使用 oracle REGEXP_SUBSTR 提取特定的 json 值?

Regexp_substr 在某些字符集后提取 Oracle

ORACLE REGEXP_SUBSTR与方括号之间的数字匹配

oracle regexp_substr用于模式的随机出现

Oracle 11G REGEXP_SUBSTR函数

Oracle REGEXP_SUBSTR 将不匹配点字符

Oracle 11g-REGEXP_REPLACE-子表达式/不同匹配项

正则表达式获取点和空格之间的所有内容 regexp_substr

REGEXP_SUBSTR:需要更精确的正则表达式代码

如何使 BigQuery 中的 REGEXP_SUBSTR() 函数匹配非贪婪?

存储过程中的REGEXP_SUBSTR函数返回null

使用 REGEXP_SUBSTR 或 SUBSTR 函数在 Oracle SQL 中“第一个 _(下划线)后开始”和“第二个 _(下划线)结束”中查找子字符串

如何获取awk中regExp的子表达式值?

在sql oracle中使用regexp_substr在特定单词之后获取单词