【发布时间】:2011-04-28 18:16:51
【问题描述】:
我是正则表达式的新手,目前正在尝试提出一个简单的正则表达式来搜索以下格式的序列号:0217103200XX,其中“XX”每个都可以是数字数字。我正在使用 SQL Server Management Studio 将正则表达式作为存储过程中的参数传递。我不确定语法是否与其他编程语言有任何不同。我有以下正则表达式作为参考: (?:2328\d\d(?:0[1-9]|[1-4]\d|5[0-3])\d{4})
欢迎提出任何建议。
更新: 我实际上是在 SQL 查询中使用它,而不是在 .Net 应用程序中。格式如下:
USE [MyDB]
EXEC MyStoredProcedure @regex = '(?:2328\d\d(?:0[1-9]|[1-4]\d|5[0-3])\d{4})'
【问题讨论】:
-
SQL Server 没有本地正则表达式支持 - 您需要创建一个 SQLCLR 程序集才能通过 .NET 公开功能。
-
@OMG:还有 xp_pcre(请参阅我的 old answer)。现在可能有点过时了,但在我们的一台服务器上运行良好。
-
@Tomalak:很酷,但它不是原生的
-
@OMG Ponies:嗯,这取决于你如何定义“原生”。通过外部 DLL 绑定的扩展存储过程非常“原生”于 SQL 服务器。 ;-)
-
@Tomalak:基本上,SQLCLR 也是如此。 “原生”对我来说意味着立即可用,不需要我创建东西、加载程序集/创建 SP 等,然后我就可以做我需要做的事情。
标签: sql-server regex sql-server-2005 tsql ssms