在DB2中使用REGEXP_SUBSTR

时间:2015-09-16 08:51:17

标签: db2 regexp-substr

我想在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]

2 个答案:

答案 0 :(得分: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子分组模式

答案 1 :(得分:0)

有了import i18n from './i18n'; import './index.scss'; import React from 'react'; import ReactDOM from 'react-dom'; import App from './modules/app/app/app'; i18n.init().then( () => ReactDOM.render(<App />, document.getElementById('root')) ); ,现在有了DB2 V11.1。它就像this一样工作:

示例1

REGEXP_SUBSTR()
  

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

     

结果为“ lo”。

示例2

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

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

     

结果为“至”。

示例3

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

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

     

结果是'yo'。