DB2:提取两个特定分隔符之间的字符串

DB2:提取两个特定分隔符之间的字符串,db2,Db2,我正在为Crystal报告编写DB2查询,遇到了一个问题。我的一个表中有一列如下所示: VISITOR=123456|ID=789 对于该列中的所有行,我需要提取第一个“=”和后面的“|”之间的“123456”。我能够在Crystal中计算出这个公式,我想我可以在SQL中完成它,但是将其转换到DB2是很困难的。例如,不能使用CHARINDEX对我来说就是一个阻碍。有人能提供帮助吗?谢谢。试试看 检查DB2regexp函数以提取它。好的,就这样。我在看定位,但它并没有真正满足我的需求;这对于特定

我正在为Crystal报告编写DB2查询,遇到了一个问题。我的一个表中有一列如下所示:

VISITOR=123456|ID=789
对于该列中的所有行,我需要提取第一个“=”和后面的“|”之间的“123456”。我能够在Crystal中计算出这个公式,我想我可以在SQL中完成它,但是将其转换到DB2是很困难的。例如,不能使用CHARINDEX对我来说就是一个阻碍。有人能提供帮助吗?谢谢。

试试看


检查DB2regexp函数以提取它。好的,就这样。我在看定位,但它并没有真正满足我的需求;这对于特定的字符串很有效,但是我如何更改它,以便从所讨论的表中以这种方式构造的任何字符串中提取该数字?@Steven只需尝试以更新示例中相同的方式构造的任何字符串。
SELECT REGEXP_SUBSTR(T.STR, '[^=]*=([^|]*)|', 1, 1, '', 1)
FROM (
VALUES 
  'VISITOR=123456|ID=789'
, 'str1 = 123456 | str2'
--, 'whatever string'
) T (STR);