varchar(max) text sqlserver 2005 数据库的正则替换

对varchat(max)或者 text字段进行操作,估计很多人会遇到8K字符的限制。

网上流传的最多的是用存储过程 把字符取成小段小段的做。很麻烦。

今采用 SQL Server 2005 SQLCLR搞定。

步骤如下:

1.首先安装sqlserver2005和visual studio 2005。启用sqlserver2005的clr ,应先在sqlsever的查询分析器按实际情况执行下边的语句已配置 CLR支持 

exec sp_configure 'clr enabled'--查看状态
exec sp_configure 'clr enabled',1--1,启用clr\0,禁用clr
reconfigure with override--按提示(配置选项 'clr enabled' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。)运行此句

 

2.第一步,打vs新建项目类型-数据库-SQL Server项目。
(这部分可以参考
http://www.chenjiliang.com/Article/View.aspx?ArticleID=2413 SQLCLR(一)入门)

代码如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 1using System;
 2using System.Data;
 3using System.Data.SqlClient;
 4using System.Data.SqlTypes;
 5using Microsoft.SqlServer.Server;
 6using System.Text.RegularExpressions;
 7
 8public partial class UserDefinedFunctions
 9ExpandedBlockStart.gifContractedBlock.gif{
10    //public static readonly RegexOptions options=        RegexOptions.IgnorePatternWhitespace
11    [Microsoft.SqlServer.Server.SqlFunction]
12    [return: SqlFacet(MaxSize=-1)]
13    public static string  GLRegexReplace(string input,string pattern,string desc)
14ExpandedSubBlockStart.gifContractedSubBlock.gif    {
15        // Put your code here
16        Regex  regex=new Regex(pattern);
17
18
19        return regex.Replace(input,desc);
20
21    }

22}
;
23


 

//注意 12行 加入这行可以突破 T-SQL 8000字符的限制。

 

3.可以在sqlsever的查询分析器测试

select dbo.GLRegexReplace('abc','abc','def')

 

4.发布 用VS2005直接运行就可以了。如果需要发布到其他的电脑

参考

http://nayyeri.net/blog/create-assembly-issue-with-visual-studio-sql-server-database-projects/


 

 

转载于:https://www.cnblogs.com/guola/archive/2009/02/23/1396531.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值