DB2中如何实现正则表达式
清单 9. 实现表函数将要使用的 regex3 函数
|
正如我们对基本匹配函数所做的那样,您也可使用 FINAL CALL 定义表函数来改进性能。必须修改 C 代码以处理 SQLUDF_TF_FIRST 和 SQLUDF_TF_FINAL 调用。
用法示例
表函数可以在类似于如下所示的 SELECT 语句中使用:
|
结果只包括拥有匹配模式的字符串。对于每个字符串,都在单独的行中显示所捕获的第一个和第二个子串。
|
下一个查询在结果集中用单独的列而不是单独的行返回这两个子串对。这样,用 SQL 语句进一步处理这些字符串以及它们的子串要容易些。该查询使用了公共表表达式(由关键字 WITH 表示)来确保在整个查询中只对每个字符串进行一次求值,而不是在中间表 s1 和 s2 所需的每次子选择中都进行一次求值。
|
这里使用了与前面查询中相同的模式。因此,可以从上面的表中派生出结果,但这一次,根据请求,这些 variable-value 对每个都位于单独的行中。
|
结束语
在本文中,我相当简略地介绍了正则表达式以及 DB2 中可用的字符串比较和匹配功能。我还描述了为什么正则表达式的强大功能是如此有用。UDF 可以用来以两种形式在 DB2 中提供正则表达式。在第一种形式中,通过将字符串与给定模式进行比较来完成基本匹配。第二种形式是实现表函数,它从正则表达式抽取已捕获的子串,并将这些子串返回给 DB2,以便用在 SQL 语句的进一步处理中。我还给出了一些关于如何改进性能的提示。
0
相关文章