SQL Server 2005: 正则表达式使模式匹配和数据提取变得更容易
2009-02-10 10:20:07 来源:WEB开发网图 2 中的代码表示枚举器。跟踪各个匹配在返回的匹配集中的位置时,MatchNode 类在字符串中封装各个匹配。MatchIterator 类是可枚举的,它还处理正则表达式处理过程。它使用新生成的关键字来创建比早期版本的框架更方便的枚举器。它将按需返回在输入字符串中检测到的各个匹配项。
Figure2匹配的自定义可枚举对象
internal class MatchNode
{
private int _index;
public int Index { get{ return _index; } }
private string _value;
public string Value { get { return _value; } }
public MatchNode( int index, string value )
{
_index = index;
_value = value;
}
}
internal class MatchIterator : IEnumerable
{
private Regex _regex;
private string _input;
public MatchIterator( string input, string pattern )
{
_regex = new Regex( pattern, UserDefinedFunctions.Options );
_input = input;
}
public IEnumerator GetEnumerator()
{
int index = 0;
Match current = null;
do
{
current = (current == null) ?
_regex.Match( _input ) : current.NextMatch( );
if (current.Success)
{
yield return new MatchNode( ++index, current.Value );
}
}
while (current.Success);
}
}
图 3 中的代码定义了表值 CLR UDF。RegexMatches 方法返回一个新的 MatchIterator。RegexMatches 方法中的 SqlFunctionAttribute 还包括某些其他属性。TableDefinition 属性被设置为函数的表定义。FillRowMethodName 被设置为调用返回可枚举对象的每个迭代的方法名称。在此情况下,该方法为 FillMatchRow。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接