我正在为Crystal Report编写DB2查询,并且遇到了问题。我的一个表中有一列看起来像这样:
VISITOR=123456|ID=789
我需要提取第一个“ =”和“ |”之间的“ 123456”之后,针对该列中的所有行。我能够找出Crystal中的公式,并且我想可以用SQL来完成它,但是将其转换为DB2却很困难。例如,对我来说,不能使用CHARINDEX就是一个秀场停止者。谁能提供帮助?谢谢。
答案 0 :(得分:1)
尝试REGEXP_SUBSTR scalar function。
SELECT REGEXP_SUBSTR(T.STR, '[^=]*=([^|]*)|', 1, 1, '', 1)
FROM (
VALUES
'VISITOR=123456|ID=789'
, 'str1 = 123456 | str2'
--, 'whatever string'
) T (STR);