DB2实现正则表达式

DB2实现正则表达式

功能描述

db2 11.1 及以上版本支持正则表达式,但是db2 10.5及以下版本不支持正则表达式,需要手工创建正则表达式函数。

安装与卸载步骤

================================================================================
== README.txt
==
== 2010-07-30
== IBM IMTE - Project Avalanche
==
== Author: Alexandre Grancher
==
================================================================================

This file describes the set of instructions to follow to deploy or to re-deploy
the DB2 regular expressions package.


Context
-------
Oracle gives the ability to its users to use regular expresssions functions to 
perform pattern matching directly in their SQL statements.

DB2 does not do that natively. Therefore, we have developped a JAVA class to 
implement an API which does pattern matching.
DB2 uses JAVA routines to bind with the implemented JAVA functions.

Enablement
----------

1- Save attached db2_regex.zip file to a new folder on the hard disk for example 
     to C:\avalanche
2- Extract all files from the zip file to C:\avalanche\db2_regex
3- Open C:\avalanche\db2_regex\scripts\sql\db2_regex_functions.sql.
4- Edit the script to suit your environment, you will need to :
        4.1- On the first line, change the database name from DB2MIGR to whatever 
             database you are using
        4.2- On the second line, you will need to change the directory name. 
             If you are using unix the syntax should be something like : 
             CALL SQLJ.INSTALL_JAR('file:/tmp/avalanche/db2_regex/lib/db2_regex.jar', db2_regex);

5- In a DB2 command line processor window, run : 
     \>db2 connect to <my_db> user <uid> using <pwd>
     \>db2 set current schema='REGEXP'
     \>db2 -td@ -vf C:\avalanche\db2_regex\scripts\sql\db2_regex_functions.sql

If you have already deployed the package and you want to deploy it again (for 
instance you have modified the JAVA code and you want to try the updated code),
then consider the following set of instructions.

1- Extract the zip file into C:\avalanche\db2_regex
From a db2 command window :
2- db2 connect t to <my_db> user <uid> using <pwd>
3- db2 set current schema='REGEXP'
4- db2 drop function REGEXP_LIKE
5- db2 drop function REGEXP_REPLACE
6- db2 drop function REGEXP_SUBSTR
7- db2 drop function REGEXP_INSTR
8- db2 call SQLJ.REMOVE_JAR(db2_regex)
9- db2stop force
10- db2start
11- db2 connect to <my_db> user <uid> using <pwd>
12- db2 set current schema='REGEXP'
13- db2 -td@ -f C:\avalanche\db2_regex\scripts\sql\db2_regex_functions.sql
14- Make sure that no error was raised at any point.


API
---

The API to the 4 methods is as follows, they closely follow the syntax for the 
Oracle functions defined in http://www.regular-expressions.info/oracle.html.

INTEGER REGEXP_LIKE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), MODE VARCHAR(3))

VARCHAR(3000) REGEXP_REPLACE(SOURCE VARCHAR(3000), 
                             REGEX VARCHAR(512), 
                             REPLACEMENT VARCHAR(3000), 
                             POSITION INTEGER,
                             OCCURRENCE INTEGER,
                             MODES VARCHAR(3))

VARCHAR(3000) REGEXP_SUBSTR(SOURCE VARCHAR(3000),
                             REGEX VARCHAR(512),
                             POSITION INTEGER,
                             OCCURRENCE INTEGER,
                             MODES VARCHAR(3))

INTEGER REGEXP_INSTR(SOURCE VARCHAR(3000),
                     REGEX VARCHAR(512),
                     POSITION INTEGER,
                     OCCURRENCE INTEGER,
                     ROPT INTEGER,
                     MODES VARCHAR(3))

Further details of each of the parameters passed to the above functions can 
used can be found as Java documentation in 
C:\avalanche\db2_regex\doc\index.html.


Examples
--------

select ID from REGEXP.REGEXP_STRINGS where REGEXP_LIKE(STRING, '^.EF[ ]+SAVEALIAS[ ]+[0-9]+', 'c') > 0

select ID from REGEXP.REGEXP_STRINGS where REGEXP_REPLACE(STRING, '^.EF[]+SAVEALIAS[ ]+[0-9]+', 'XX', 1, 1, 'c')='XX'

select ID from REGEXP.REGEXP_STRINGS where REGEXP_SUBSTR(STRING, '^.EF[ ]+SAVEALIAS[ ]+[0-9]+', 1, 1, 'c')='DEF SAVEALIAS 2210'

select ID from REGEXP.REGEXP_STRINGS where REGEXP_INSTR(STRING, '^.EF[ ]+SAVEALIAS[ ]+[0-9]+',1, 1, 1, 'c') > 0

---------------------------------

常用正则表达式

- 手机规则:
  规则:手机号以1[3|4|5|6|7|8|9]开头,位数为11位数字
  示例:13012345678
  表达式:^[1][3,4,5,6,7,8,9][0-9]{9}$

- 电话
  规则:电话号码可以存在3~4位区号,使用“-”分隔,后面为7~8位数字;
  示例:有区号:010-12345678  无区号:12345678
  正则表达式:^([0-9]{3,4}-)?[0-9]{7,8}$

- 身份证
  简单规则:15位或18位数字,或17位数字+大写字母X,其他规则自行调整;
  正则表达式:(^\d{15}$)|(^\d{17}(\d|X)$)

下载地址

https://download.csdn.net/download/huryer/88101372?spm=1001.2014.3001.5501

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值