正则表达式在T-SQL中的序列号

时间:2010-10-21 17:31:06

标签: sql-server regex sql-server-2005 tsql ssms

我是regexs的新手,目前正在尝试使用以下格式搜索序列号的简单正则表达式: 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})'

2 个答案:

答案 0 :(得分:1)

使用LIKE:SQL Server中没有本机RegEx

LIKE '0217103200[0-9][0-9]'

答案 1 :(得分:0)

正如OMG Ponies所说 - SQL Server本身不支持正则表达式(需要使用SQLCLR for 2005+或xp_cre)。

如果我理解了您的问题,您可以使用PATINDEX查找序列号

Select *
From dbo.MyTable
Where PATINDEX('0217103200[0-9][0-9]', SerialNumberColumn) > 0