CLR实用函数:正则、字符串聚合

guguda2008 2013-04-07 04:01:42
加精
写了四个CLR函数,我们比较常用的功能

自定义函数

REGULARMATCH() 对应C#中MATCH

IS_REGULARMATCH() 对应C#中IS_MATCH

自定义聚合

STR_SUM 字符串聚合,中间半角逗号分隔

STR_UNION_SUM 字符串去重聚合,也是半角逗号分隔


使用示例:
USE MASTER  
GO


--判断手机号是否合法
SELECT dbo.IS_REGULARMATCH('13888888888','^(1[3,5,8,4][0-9])\d{8}$'),dbo.IS_REGULARMATCH('123456789','^(1[3,5,8,4][0-9])\d{8}$')
--1 0

--聚合函数使用示例
IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
GO
CREATE TABLE TB(
ID INT
,VAL VARCHAR(MAX)
)
GO
INSERT INTO TB
SELECT 1,'AA' UNION ALL
SELECT 2,'B' UNION ALL
SELECT 3,'CD'
GO
INSERT INTO TB
SELECT 1,'AA' UNION ALL
SELECT 2,'BB' UNION ALL
SELECT 3,'CD'
GO
SELECT ID,DBO.STR_SUM(VAL),DBO.STR_UNION_SUM(VAL)
FROM TB
GROUP BY ID
/*
1 AA,AA AA
2 BB,B BB,B
3 CD,CD CD
*/


代码太长,帖子里放不下,到下面博客里复制代码到数据库里运行后就可以用了
博客地址
...全文
4065 点赞 收藏 48
写回复
48 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
越过越咸 2013-04-15
clr mark!
回复
u010297809 2013-04-14
很好的文章,值得观赏。
回复
u010294895 2013-04-14
有劳有劳,学习了
回复
u010291561 2013-04-14
很好,详细 谢谢。
回复
看破世界 2013-04-11
回复
王小潇 2013-04-10
学习了,非常感谢
回复
回复
u010229958 2013-04-09
学习了,非常感谢
回复
huotongyin419 2013-04-09
实话说,我是来学习的
回复
中国风 2013-04-08
CLR要特定环境下用 曾用CLR写过按位计算分拆字符,比直接用SQL自定义函数还慢
回复
lb253555561 2013-04-08
很好很强大很实用
回复
tbsweiwei2010 2013-04-08
顶啊。。。。
回复
小_爱 2013-04-08
无可奈何花落去; 似曾相识燕归来。
回复
先MARK一下,改天如果有人想在SQLCLR 玩 .NET performance tuning的,我到满有兴趣。
回复
我看着头晕啊!虽然能理解代码但是看着还是头晕啊!还是收藏下把!也许下次能用到 看来T-SQL我注定只能学皮毛啊!
回复
冬末春晓 2013-04-08
感谢大大分享
回复
hyde100 2013-04-08
看一下。。。。。
回复
qldsrx 2013-04-08
引用 29 楼 roy_88 的回复:
CLR要特定环境下用 曾用CLR写过按位计算分拆字符,比直接用SQL自定义函数还慢
那是因为你不会优化.NET代码,CLR函数的效率完全取决于.NET的执行效率,其中指针是最高效率的。
回复
qldsrx 2013-04-08
这个我早就写过,也放过下载,只不过懒得写详细介绍,下载地址在这里,免积分,想看的自己去下载吧: http://download.csdn.net/detail/qldsrx/4393361 看来下楼主的博客,其实常用的不止那些,回头看下我给的CLR函数,还有: MaxOther是某列最大时获取另外一列值的聚合函数,MinOther则反之,GetCodeTable是拆分字符串到编码,GetIdTable是拆分字符串到数字的表值函数。
回复
u010209061 2013-04-08
曾用CLR写过按位计算分拆字符,比直接用SQL自定义函数
回复
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2013-04-07 04:01
社区公告
暂无公告