WEB开发网
开发学院数据库MSSQL Server SQL Server 2005: 正则表达式使模式匹配和数据提取... 阅读

SQL Server 2005: 正则表达式使模式匹配和数据提取变得更容易

 2009-02-10 10:20:07 来源:WEB开发网   
核心提示: 模式存储这些函数使用的所有模式均仅为字符串,这意味着其中任何一个都可存储在数据库中的一个表中,SQL Server 2005: 正则表达式使模式匹配和数据提取变得更容易(6),多数存储国际数据的数据库都有一个表示国家的表,通过将额外列添加到此表,SQL Server 包括依赖于按需发生的处

模式存储

这些函数使用的所有模式均仅为字符串,这意味着其中任何一个都可存储在数据库中的一个表中。多数存储国际数据的数据库都有一个表示国家的表。通过将额外列添加到此表,您可以存储特定于国家的验证模式。这样可允许适用于某地址行的约束根据该行对应的国家而变化。

在代表客户端存储数据的数据库中,通常已经有一个表示客户端的表。此表可用于存储允许您描述在数据库中存储原始客户端数据方式的分组模式,这样您就可以创建计算列以便从客户端数据中提取实际需要的数据。例如,如果您的每个客户端都有唯一的帐号方案而且您只需要该帐号的特定段,您可以轻松创建一个提取每个客户端信息正确片段的表达式。

匹配

并非确定字符串是否与模式匹配,它有时需要提取每个匹配项。以前,这类提取需要游标循环访问字符串的各部分。该过程不仅速度慢,而且代码也难于理解和维护。正则表达式是执行此操作的更好方法。现在的问题是如何在 SQL 构造中返回全部所需的数据。表值函数可以解决这个问题。

表值函数有点类似先前的函数,但在两个方面有所不同。首先,应用到方法的属性必须完全声明返回的表结构。其次,涉及两个方法。第一个方法返回可枚举对象而不是实际的函数结果。第二个方法传递可枚举对象以填充各行的字段。通过枚举器检索的每个值都应与结果集的一行对应。.NET Framework 中的 ICollection 接口实现了 IEnumerable,这意味着任何集合都可由第一个方法返回。Regex 类包含 Match 方法,该方法返回您可使用的 MatchCollection。MatchCollection 的问题在于,必须在 Match 方法返回前处理整个字符串。SQL Server 包括依赖于按需发生的处理过程的优化措施,因此我更愿意编写自己的枚举器(按需返回各匹配项)而不是预先返回整个集合。此决策实际取决于优化枚举器之前如何使用函数以及应如何对函数进行大量测试。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:SQL Server 正则

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接