在T-SQL中使用正则表达式函数
2010-06-25 17:36
148 查看
有想过在T-Sql使用正则表达式吗?是的,完全可以的,我们可以用SQLSERVERCLRsqlfunction来实现这一功能。
首先,我们在VSTS中创建一DatabaseProject,增一个class,实现下面的一个方法:
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
好了,Build后Deploy到你的Targetdatabase就OK了,VisualStudio会自动注册这个程序集的。如果,你想手动注册程序集,可执行以下的T-SQL:
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
OK,一切OK的后,我们来测试下:
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
上面的T-SQL是找出Threads表ThreadId是GUID的记录数。等于1是匹配,^[{|\(]?[0-9a-fA-F]{8}[-]?([0-9a-fA-F]{4}[-]?){3}[0-9a-fA-F]{12}[\)|}]?$匹配GUID的正则表达式。
完了,希望这篇POST对您有帮助。
您可能对以下POST感兴趣:
SQLSERVER2008中CTE的Split与CLR的性能比较
SQLSERVER使用CLRStoredProcedure导出数据到Excel
作者:PetterLiu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-PetterLiuBlog。
首先,我们在VSTS中创建一DatabaseProject,增一个class,实现下面的一个方法:
///<summary>
///Regstheexmatch.
///</summary>
///<paramname="inputValue">Theinputvalue.</param>
///<paramname="regexPattern">Theregexpattern.</param>
///<remarks>Author:PetterLiuhttp://wintersun.cnblogs.com</remarks>
///<returns>1match,0notmatch</returns>
[SqlFunction]
publicstaticboolRegExMatch(stringinputValue,stringregexPattern)
{
//Anynulls-wecan'tmatch,returnfalse
if(string.IsNullOrEmpty(inputValue)||string.IsNullOrEmpty(regexPattern))
returnfalse;
Regexr1=newRegex(regexPattern.TrimEnd(null));
returnr1.Match(inputValue.TrimEnd(null)).Success;
}
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
好了,Build后Deploy到你的Targetdatabase就OK了,VisualStudio会自动注册这个程序集的。如果,你想手动注册程序集,可执行以下的T-SQL:
CREATEASSEMBLY[RegExCLR]FROM'RegExCLR.dll';
--AddtheREGEXfunction.Wewantafriendlyname
--RegExMatchratherthanthefullnamespacename.
--NotethewaywehavetospecifytheAssembly.Namespace.Class.Function
--NOTEtheRegExCLR.RegExCLR
--(oneistheassemblytheotheristhenamespace)
CREATEFUNCTIONRegExMatch(@inputCalueNVARCHAR(4000),
@regexPatternNVARCHAR(4000))RETURNSBIT
ASEXTERNALNAMERegExCLR.RegExCLR.ClrClass.RegExMatch;
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
OK,一切OK的后,我们来测试下:
selectCOUNT(1)fromThreadswheredbo.RegExMatch(ThreadId,'^[{|\(]?[0-9a-fA-F]{8}[-]?([0-9a-fA-F]{4}[-]?){3}[0-9a-fA-F]{12}[\)|}]?$')=1
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
上面的T-SQL是找出Threads表ThreadId是GUID的记录数。等于1是匹配,^[{|\(]?[0-9a-fA-F]{8}[-]?([0-9a-fA-F]{4}[-]?){3}[0-9a-fA-F]{12}[\)|}]?$匹配GUID的正则表达式。
完了,希望这篇POST对您有帮助。
您可能对以下POST感兴趣:
作者:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-
相关文章推荐
- Oracle 10G里面sql使用正则表达式函数
- vfp dbf正则表达式函数,可在vfp的sql使用
- 使用正则表达式检验sql语句(只支持select(不含函数,子
- SQL 2005使用正则表达式
- C#判断IP地址是否合法函数-使用正则表达式-2个
- SQL 正则表达式使用
- 在 Visual Studio 或 SQLServer Management Studio 的代码编辑器中使用正则表达式匹配日期格式
- PHP 正则表达式常用函数使用小结
- PHP 正则表达式常用函数使用小结
- python里使用正则表达式的groups()函数访问组匹配串
- Oracle SQL中使用正则表达式 执行报ORA-07445 [_intel_fast_memcpy.A()+10] 错误
- [转帖]C#如何使用正则表达式来校验字段串输入的系列函数
- 使用正则表达式匹配JS函数代码
- Oracle 正则表达式函数-REGEXP_REPLACE 使用例子
- SQL 正则表达式及mybatis中使用正则表达式
- PowerShell函数使用正则表达式验证输入参数实例
- PHP 正则表达式常用函数使用小结
- 使用DreamWeaver正则表达式修改函数参数
- SQL应用与开发:(六)函数和表达式的使用
- 使用正则表达式获取Sql查询语句各项(表名、字段、条件、排序)