网站建设资讯

NEWS

网站建设资讯

sqlserver正则,sqlserver正则查询

sqlserver中正则表达式和分组查询

使用vbscript 或者是frameword程序集向SqlServer数据库中添加一个正则表达式函数,就可以满足你的需求了嘛。

创新互联专注于企业全网营销推广、网站重做改版、景洪网站定制设计、自适应品牌网站建设、HTML5购物商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为景洪等各大城市提供网站开发制作服务。

vbscript 函数(需要SqlServer运行环境中vbscript 库)

CREATE function [dbo].[RegexMatchFirst]

(

@source ntext, --原字符串

@regexp varchar(1000), --正则表达式

@global bit = 1, --是否是全局替换

@ignoreCase bit = 0 --是否忽略大小写

)

returnS varchar(1000) AS

begin

declare @hr integer

declare @objRegExp integer

declare @objMatch INT

declare @matchcount INT

declare @command varchar(50)

declare @result varchar(5000)

exec @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT

IF @hr 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

exec @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp

IF @hr 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

exec @hr = sp_OASetProperty @objRegExp, 'Global', @global

IF @hr 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

exec @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCase

IF @hr 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

exec @hr = sp_OAMethod @objRegExp, 'execute', @objmatch OUTPUT, @source

IF @hr 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

EXEC @hr= sp_OAGetProperty @objmatch, 'count', @matchcount OUT

IF @hr 0 or @objmatch = 0 begin

exec @hr = sp_OADestroy @objRegExp

return null

end

set @command = 'item(0).Value'

EXEC @hr= sp_OAGetProperty @objmatch, @command, @result OUT

exec @hr = sp_OADestroy @objRegExp

IF @hr 0 begin

return null

end

return @result

end

framework运行时程序集:

打开 Microsoft Visual Studio,创建一个sqlserver 数据库数据库项目,在项目中按照SqlServer方式创建一个正则表达式匹配函数,然后编译部署到你的SqlServer数据库中。

这个时候刷新数据库的可编程性--函数 -- 标量值函数就会看到你在Microsoft Visual Studio中创建的自定义函数了。

如何在sql server中使用正则表达式

大致步骤是:

1.下载他提供的那个压缩包,里面有源代码和安装脚本

2.将DLL复制到SQL

Server规定的目录

3.运行INSTALL.sql这个脚本

大致使用的效果如下

SELECT

master.dbo.fn_pcre_match('billg@microsoft.com','^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$')

这句脚本的意思是,根据后面的正则表达式(一个email的规则)匹配前面的字符串.

如果返回1的话,表示匹配到了,否则返回0.

用sqlserver建立一张表,如何利用正则表达式查询?

Sql server不支持正则,如果是Sql2005以上的版本,可以用Dotnet的托管代码来实现,参考:

sqlserver拆分长字段。正则表达式

([\s\S]*?)(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2})

正则可以这样写

拆分的话

在代码里面做会方便一些吧


分享文章:sqlserver正则,sqlserver正则查询
文章出自:http://cdweb.net/article/hohpid.html