sql server clr 集成系列之四 创建一个clr的表值函数---实用的Split函数
2007-03-14 17:07
369 查看
大家都知道在C#把一个字符串以指定的字符分成一个数组,实用split方法很容易办到,但是在t-sql 中却。。。。 在我的项目中,有如下应用:批量读取一批数据,然后处理每行的数据,处理完后,把处理成功的id和处理失败的id返回给数据库,这就涉及到一个批量更新的一个问题,你是把id一个一个写成批处理更新回数据库还是每个id就打开一次数据库,更新呢?其实,只要t-sql支持数组就能够做到。好了,我们现在就让t-sql支持数组!
大家都说我的描述很不好,这次我干脆直接用代码+注释来表示了。
using System;
using System.Collections;
using System.Text;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
namespace StringSplit
这样,编译此类库,实用如下sql 语句将dll创建到数据库中:
create assembly ArrayAssembly
from 'd:\stringSplit.dll'
WITH permission_set = Safe;
注意更改dll的对应地址。
然后如果是第一次做clr集成应用,需要把clr功能开启,使用如下语句开启:
EXEC sp_configure 'clr enabled', '1';GORECONFIGURE;GO
然后开启了的朋友可以创建这个表值函数了,使用如下语句:
create function splitstring(@x nvarchar (200),@y nchar(1))
RETURNS TABLE(StringElement nvarchar(200))
AS EXTERNAL NAME ArrayAssembly.[StringSplit.Stringhelp].GetStrings;
GO
这个语句要注意命名规则,规则我在以前的文章中讲过了。
然后可以测试这个表值函数了。
select * from splitstring('xiangxiang,zangjifei',',')
返回结果:
这样,就可以很容易的使用了。
比如:
select * from dbo.T_test as t where t.id in (select * from splitstring('12,23',','))
大家都说我的描述很不好,这次我干脆直接用代码+注释来表示了。
using System;
using System.Collections;
using System.Text;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
namespace StringSplit
这样,编译此类库,实用如下sql 语句将dll创建到数据库中:
create assembly ArrayAssembly
from 'd:\stringSplit.dll'
WITH permission_set = Safe;
注意更改dll的对应地址。
然后如果是第一次做clr集成应用,需要把clr功能开启,使用如下语句开启:
EXEC sp_configure 'clr enabled', '1';GORECONFIGURE;GO
然后开启了的朋友可以创建这个表值函数了,使用如下语句:
create function splitstring(@x nvarchar (200),@y nchar(1))
RETURNS TABLE(StringElement nvarchar(200))
AS EXTERNAL NAME ArrayAssembly.[StringSplit.Stringhelp].GetStrings;
GO
这个语句要注意命名规则,规则我在以前的文章中讲过了。
然后可以测试这个表值函数了。
select * from splitstring('xiangxiang,zangjifei',',')
返回结果:
这样,就可以很容易的使用了。
比如:
select * from dbo.T_test as t where t.id in (select * from splitstring('12,23',','))
相关文章推荐
- sql server clr 集成系列之二 简单的sql 函数
- sql server clr 集成系列之二 简单的sql 函数
- SQL Server CLR系列(1)-创建CLR项目与自动部署
- SQL Server CLR系列(2)-创建触发器与手动部署
- SQL Server CLR 集成简介
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建
- C#File类常用的文件操作方法(创建、移动、删除、复制等) File类,是一个静态类,主要是来提供一些函数库用的。静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和
- SQL Server Database 维护计划创建一个完整的备份策略
- OLAP函数系列1:SqlServer中分组函数GROUP BY 的扩展:all, cube,roolup与grouping
- 初探SQL Server CLR 集成
- Visual Studio 2008不能创建数据库连接出现:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080cc91”或它的一个依赖项。系统找不到指定的文件的解决办法
- 一个关于SQL Server memory计数器的系列讲座(很详细)
- SQL Server CLR全功略之三---CLR标量函数、表值函数和聚合函数(UDA)
- 在DB2 中创建一个获取汉字拼音首字母的SQL 函数
- Silverlight实用窍门系列:30.Silverlight中创建一个最简单的WCF RIA Services访问数据库实例【实例源码+数据库下载】
- (转载)使用SQL-Server创建一个银行数据管理系统Ⅰ
- 关于用sqlserverr创建一个Oracle的连接服务器问题
- SQL Server CLR 集成简介 (写给自己)
- SQL创建一个表值函数的事例
- SQL Server CLR全功略之三---CLR标量函数、表值函数和聚合函数(UDA)