- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DB中实现正则表达式【DOC精选】
DB2中实现正则表达式(1)
2005-12-01 10:00 出处:IBM中国
【导读】本文简略地介绍了正则表达式以及 DB2 中可用的字符串比较和匹配功能。还描述了为什么正则表达式的强大功能是如此有用。
正则表达式
正则表达式用于查找和替换字符串中的模式。正则表达式是用某种语法定义的,正则表达式引擎采用这种语法并将它与字符串进行比较。引擎返回字符串是否与语法匹配的指示;也即,该字符串是否包含能够从该语法派生的子串。此外,引擎还能够返回匹配的子串。术语“模式(pattern)”用来表示语法。
最基本的模式仅由单个字母组成。当与该模式进行比较时,包含这个字母的字符串就是一个“匹配”。例如,如果模式是“a”,则字符串“abcd”就是一个匹配,而字符串“xyz”则不是。正则表达式的强大功能来自于预定义的运算符(也称为元字符),它们可以用很小的空间来表示模式。根据“方言”和受支持的功能,可以使用不同的元字符。通常,其中的一些可用字符如下:
| — 二中择一
[ ] — 分组
* — 多次出现(也匹配零次出现)
+ — 多次出现(至少一次)
? — 随意的出现次数
\\\\ — 反斜杠
不同的系统实现了常用正则表达式的各种扩展。编程语言 Perl 中使用的正则表达式支持进一步的缩写。本文中所用的库实现了这些扩展。下面摘录了其中部分可以在 Perl 正则表达式语言中使用的缩写:
\\s — 任意空白字符
\\w — 任意字母数字字符
\\d — 任意数字字符
另一个更高级的示例是模式“[A-Z]* = ([0-9]|0x00);”。与这个模式相匹配的字符串包含这样的子串:它由几个大写字母、后面跟上一个空格、一个等号、另一个空格,然后是一个数字或字符串“0x00”组成。该子串的最后一个字符必须是分号。使用 Perl,这个模式可以表示为“\\w* = (\\d|0x00);”。“NM = 0x00;”和“X = 7;”是两个可以与该模式匹配的字符串。但字符串“Z = 123;”不能匹配,因为 123 是由三个数字所组成的。
DB2 中的字符串匹配
除了 Extender 以外,DB2 还允许几种用于文本比较的函数和运算符。但那些函数和运算符要么在用于模式匹配的功能方面有限制,要么就是会给可能使用它们的查询带来复杂性。这里简要地摘录几个可用的功能:
= 或 谓词:逐字符地比较两个字符串是否相等。
LIKE 谓词:使用通配符的基本模式匹配。
LOCATE 函数:在字符串中查找子串。
尽管也可以用 SQL 运算符表示模式“[A-Z]* = ([0-9]|0x00);”,但那样会很麻烦。例如,下列 SELECT 语句的 WHERE 子句中所使用的谓词会匹配字符串“str”中等号之后的部分,如 清单 1所示:
清单 1. 使用 LIKE 匹配模式
SELECT str
FROM strTable
WHERE ( str LIKE % = 0;% OR str LIKE % = 1;% OR str LIKE % = 2;%
OR str LIKE % = 3;% OR str LIKE % = 4;% OR str LIKE % = 5;%
OR str LIKE % = 7;% OR str LIKE % = 7;% OR str LIKE % = 8;%
OR str LIKE % = 9;% OR str LIKE % = 0x00;% )
这增加了可以匹配“[A-Z]*”子模式的谓词的复杂度,这可以使用对整个字符串进行迭代并进行逐字符比较的函数来完成,但您会发现使用内置功能既冗长又复杂。
示例方案
让我们定义下列清单( 清单 2)并插入几行:
清单 2. 创建我们的样本表
CREATE TABLE strTable ( c1 INTEGER, str VARCHAR(500) );
INSERT INTO strTable VALUES ( 1, some text; ),
( 2, variable = 1234; ),
( 3, var2 = string variable; ),
( 4, xyz = ),
( 5, myVar = 0x00; ),
( 6, # comment ),
您可能关注的文档
最近下载
- 国家开放电大《数据库应用技术》期末终考题库及标准参考答案.pdf VIP
- 2025年公务员考试-军转干-公共基础知识考试历年真题常考点试题带答案.docx VIP
- 2012版肺结核门诊诊疗规范资料.ppt VIP
- 国家开放大学电大本科《财务报表分析》机考2套题库及答案.doc VIP
- 11J122 外墙内保温建筑构造.docx
- (精华版)国家开放大学电大《财务报表分析》机考8套真题题库及答案1.docx VIP
- 课文主旨、写作特色整理-2024-2025学年统编版语文八年级下册.docx VIP
- 2025年福建省中考英语真题 (含答案).pdf VIP
- 学校招考财务会计人员试题及答案(教育).docx VIP
- FCE考试阅读常见同义替换词汇.docx VIP
文档评论(0)