当前位置:  开发笔记 > 编程语言 > 正文

SQL Server服务器中的正则表达式?

如何解决《SQLServer服务器中的正则表达式?》经验,为你挑选了2个好方法。

是否可以使用完整的正则表达式功能集进行高效查询.

如果不是微软真的应该考虑这个功能.



1> Tomalak..:

对于SQL Server 2000(以及任何其他32位版本的SQL Server),有xp_pcre,它将Perl兼容的正则表达式作为一组扩展存储过程引入.我用它,它的工作原理.

更新的版本使您可以直接访问.NET集成的正则表达式(此链接似乎已经死了,这是另一个:MSDN:如何:使用CLR数据库对象).



2> ConcernedOfT..:

答案是否定的,不是一般情况下,尽管它可能取决于你的效率是什么意思.出于这些目的,我将使用以下定义:'以合理的顺序有效地使用索引和连接',这可能与任何一个一样好.

在这种情况下,"高效"查询是's-arg'-able,这意味着他们可以使用索引查找来缩小搜索谓词的范围.平等(t-joins)和简单的不等式可以做到这一点.'AND'谓词也可以这样做.之后,我们进入表,索引和范围扫描 - 即必须按记录(或索引键)索引键进行比较的操作.

Sontek的回答描述了一种将regexp功能嵌入到查询中的方法,但操作仍然需要逐个记录地进行比较.将其包含在函数中将允许基于函数的索引,其中计算的结果在索引中具体化(Oracle支持这一点,您可以通过使用本文中讨论的那种技巧在SQL Server中获得等效的功能).但是,您无法为任意正则表达式执行此操作.

在一般情况下,正则表达式的语义不适合以索引的方式修剪匹配集,因此可能无法将rexegp支持集成到查询优化器中.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有