MS SQL不支持正则表达式,可以用CLR实现。
1、 新建一个 MSSQL的数据库项目[VS2010中],配置到你的数据库中
2、 在数据库项目中新建一个函数库,编写如下代码:
/// <summary>
/// 验证是否符合正则表达式
/// </summary>
[SqlFunction]
public static SqlBoolean RegexIsMatch(string input, string regex)
{
return new SqlBoolean(Regex.IsMatch(input, regex, RegexOptions.IgnoreCase));
}
然后在数据库项目上点击“右键”,选择“部署”
PS:此功能需要MSSQL2005或者以上版本支持
如果你使用的是.NET 3.5版本的话,需要在数据库服务器上安装.net framework 3.5
目前SQLSERVER CLR 不支持.NET 4.0,所以如果你使用VS2010开发的话需要把项目版本修改成为.NET 2.0/3.5
使用方法:
SELECT * FROM [table] WHERE dbo.RegexIsMatch([ID],'^\d+$') = 1