首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL SERVER 正则匹配实例分享-【叶子】解决办法

2012-04-15 
SQL SERVER 正则匹配实例分享--【叶子】SQL code----标题: 应用实例之

SQL SERVER 正则匹配实例分享--【叶子】

SQL code
--====================================--标题: 应用实例之SQL SERVER 正则匹配--作者:maco_wang--时间:2012-03-25--说明:MS-SQL SERVER 中的正则匹配--====================================/*假设测试数据为:col----------a b d c ea a b c db b c d ee u g h wo a k d w1)得到没有重复字母的行,即想要得到如下结果:col--------------a b c d ee u g h wo p k n w2)得到同时存在a和d,并且a和d之间只有0或是1个字母的,即想要得到的结果:col----------a b d c eo a k d w*/--测试数据if object_id('[tb]') is not null drop table [tb]create table [tb] (col varchar(10))insert into [tb]select 'a b d c e' union allselect 'a a b c d' union allselect 'b b c d e' union allselect 'e u g h w' union allselect 'o a k d w' select * from [tb]--本示例在SQL SERVER 2000版本即可适用。gocreate function dbo.RegexMatch(    @pattern varchar(2000),    @matchstring varchar(8000))returns intas begin    declare @objRegexExp int    declare @strErrorMessage varchar(255)    declare @hr int,@match bit    exec @hr= sp_OACreate 'VBScript.RegExp', @objRegexExp out    if @hr = 0         exec @hr= sp_OASetProperty @objRegexExp, 'Pattern', @pattern    if @hr = 0         exec @hr= sp_OASetProperty @objRegexExp, 'IgnoreCase', 1    if @hr = 0         exec @hr= sp_OAMethod @objRegexExp, 'Test', @match OUT, @matchstring    if @hr <>0     begin        return null    end    exec sp_OADestroy @objRegexExp    return @matchendgo--1)得到没有重复字母的行--正常思路,可能是按照空格分割后去重然后合并,最后判断长度(略)--用正则就很方便了select col from [tb] where dbo.RegexMatch('^.*?([a-z])[ ]\1.*?$',col)=0/*col----------a b d c ee u g h wo a k d w*/--2)得到同时存在a和d,并且a和d之间间隔小于等于一个字母的--正常思路select col from [tb] where charindex('a',col)>0and charindex('d',col)>0and abs(charindex('a',col)-charindex('d',col))<5/*col----------a b d c eo a k d w*/--正则处理select col from [tb] where dbo.RegexMatch('.*a[a-z ]{1,3}d.*',col)=1/*col----------a b d c eo a k d w*/--这里的正则写法考虑的就不全,如果d在a前面呢?--那么修正一下select col from [tb] where dbo.RegexMatch('.*d[a-z ]{1,3}a.*|.*a[a-z ]{1,3}d.*',col)=1/*col----------a b d c eo a k d w*/


上一篇:SQL SERVER 正则替换实例分享

[解决办法]

[解决办法]
又出新的呢
[解决办法]
支持一个!谢谢分享!
[解决办法]
支持一个!谢谢分享!
[解决办法]

叶子现在在研究sql正则么?
[解决办法]
这个其实不是你想解决就可以解决的问题啊
[解决办法]
sql正则
[解决办法]
牛人啊
[解决办法]

[解决办法]
支持老王大哥。
[解决办法]
感谢分享!
[解决办法]
支持老王
[解决办法]
谢谢分享
[解决办法]
谢谢分享
[解决办法]
牛人啊,支持一下
[解决办法]
感谢分享!支持!!
------解决方案--------------------


好东西
[解决办法]
支持一个!谢谢分享!
[解决办法]
支持分享
[解决办法]

叶子现在在研究sql正则么?
[解决办法]
牛人啊
[解决办法]
select col from [tb] 
where dbo.RegexMatch('.*d[a-z ]{1,3}a.*|.*a[a-z ]{1,3}d.*',col)=1
/*
col
----------
a b d c e
o a k d w
*/




[解决办法]
顶一个。。收藏了。
[解决办法]
很好的文章,收藏了,謝謝!!!
[解决办法]

探讨

支持一个!谢谢分享!

[解决办法]
感谢分享 收藏
[解决办法]
应该收藏一下
[解决办法]
收藏!!!
[解决办法]
1024
[解决办法]

[解决办法]
叶子,辛苦!
[解决办法]
叶子,辛苦!
[解决办法]
请问,Sql Server 怎么第一次安装。在安装了VS2010之后。。
[解决办法]
持一个!谢谢分享!
[解决办法]
没这样写过 感觉不错
[解决办法]
牛人啊

[解决办法]
收到了 谢谢分享 谢谢
[解决办法]
支持一个!谢谢分享!
[解决办法]
支持叶子
[解决办法]
非常感谢!!!
[解决办法]
sql的正则匹配还第一次接触,用处很大,感谢叶子的分享!
[解决办法]
sql的正则匹配还第一次接触,用处很大,感谢叶子的分享!
[解决办法]
分享万岁
[解决办法]
立定啊,我第一次见数据库用正则啊,学习了。叶子很牛啊
[解决办法]
执行系统存储过程的时候参数VBScript,可是是javaScript不。下来测试下啊
[解决办法]
看后要支持,学习啦。
[解决办法]
很好的文章,收藏了,謝謝!!!
[解决办法]
牛人,看来学无止境啊。。。
[解决办法]
很实用的脚本,学习了
------解决方案--------------------


适用 不错
[解决办法]
sql 正则 好吧 学习了
[解决办法]
都是牛人,哥说实在的知道看的懂30%,汗
[解决办法]
都是牛人
[解决办法]
外行路过一下
[解决办法]
牛人呀,受益匪浅
[解决办法]
话说。这学期刚开数据库
[解决办法]
谢谢楼主分享
[解决办法]
高手啊~~~
[解决办法]
膜拜!!!
[解决办法]
很实用啊。

热点排行