1

我想在 DB2(10.5 版)中使用类似 REGEXP_SUBSTR 的东西。

有一个我尝试过的例子:

SELECT REGEXP_SUBSTR('hello to you', '.o') 
FROM sysibm.sysdummy1

我收到此错误:[错误代码:-420,SQL 状态:22018]

09:23:12  [SELECT - 0 row(s), 0.000 secs]  [Error Code: -420, SQL State: 22018]  DB2 SQL Error: SQLCODE=-420, SQLSTATE=22018, SQLERRMC=INTEGER, DRIVER=3.57.82
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.000/0.000 sec  [0 successful, 0 warnings, 1 errors]
4

2 回答 2

0

DB2中没有等效的功能REGEXP_SUBSTR

XMLQUERY但是,您可以使用该功能获得类似的结果

SELECT 
  XMLCAST(
   XMLQUERY('fn:replace($src,"^hello | you$","")' 
   PASSING 'hello to you' AS "src")
  AS VARCHAR(255))
FROM SYSIBM.SYSDUMMY1;

困难这里,fn:replace删除匹配的模式,因为 DB2 的实现不支持()$1子分组模式

于 2015-09-16T14:43:52.570 回答
0

有了DB2 V11.1现在REGEXP_SUBSTR()它的工作原理很简单:

示例 1

SELECT REGEXP_SUBSTR('hello to you', '.o',1,1) 
   FROM sysibm.sysdummy1Copy

返回与 'o' 之前的任何字符匹配的字符串。

结果是'lo'。

示例 2

SELECT REGEXP_SUBSTR('hello to you', '.o',1,2) 
   FROM sysibm.sysdummy1Copy

返回与 'o' 之前的任何字符匹配的第二个字符串。

结果是“到”。

示例 3

SELECT REGEXP_SUBSTR('hello to you', '.o',1,3) 
   FROM sysibm.sysdummy1

返回与 'o' 之前的任何字符匹配的第三个字符串。

结果是“哟”。

于 2019-05-17T14:03:23.030 回答