SQL Server实现split功能
2013-12-18 09:45
344 查看
<ol class="dp-sql" start="1"><li class="alt"><span><span class="comment">--实现split功能 的函数 </span><span> </span></span></li><li class="alt"><span><span> </span></span></li><li><span><span class="keyword">create</span><span> </span><span class="keyword">function</span><span> f_split(@SourceSql </span><span class="keyword">varchar</span><span>(8000),@StrSeprate </span><span class="keyword">varchar</span><span>(10)) </span></span></li><li class="alt"><span><span class="keyword">returns</span><span> @</span><span class="keyword">temp</span><span> </span><span class="keyword">table</span><span>(a </span><span class="keyword">varchar</span><span>(100)) </span></span></li><li><span><span class="keyword">as</span><span> </span></span></li><li class="alt"><span><span class="keyword">begin</span><span> </span></span></li><li><span><span class="keyword">declare</span><span> @i </span><span class="keyword">int</span><span> </span></span></li><li class="alt"><span><span class="keyword">set</span><span> @SourceSql=rtrim(ltrim(@SourceSql)) </span></span></li><li><span><span class="keyword">set</span><span> @i=charindex(@StrSeprate,@SourceSql) </span></span></li><li class="alt"><span>while @i>=1 </span></li><li><span><span class="keyword">begin</span><span> </span></span></li><li class="alt"><span><span class="keyword">insert</span><span> @</span><span class="keyword">temp</span><span> </span><span class="keyword">values</span><span>(</span><span class="func">left</span><span>(@SourceSql,@i-1)) </span></span></li><li><span><span class="keyword">set</span><span> @SourceSql=</span><span class="func">substring</span><span>(@SourceSql,@i+1,len(@SourceSql)-@i) </span></span></li><li class="alt"><span><span class="keyword">set</span><span> @i=charindex(@StrSeprate,@SourceSql) </span></span></li><li><span><span class="keyword">end</span><span> </span></span></li><li class="alt"><span>if @SourceSql<><span class="string">'\'</span><span> </span></span></li><li><span><span class="keyword">insert</span><span> @</span><span class="keyword">temp</span><span> </span><span class="keyword">values</span><span>(@SourceSql) </span></span></li><li class="alt"><span><span class="keyword">return</span><span> </span></span></li><li><span><span class="keyword">end</span><span> </span></span></li><li class="alt"><span> </span></li><li><span>go </span></li></ol> --> 测试数据:[a] if object_id('[a]') is not null drop table [a] go create table [a]([xueke] varchar(50),[hits] int) insert [a] select '数学,语文',2 union all select '语文,英语',3 union all select '化学,物理',4 union all select '物理,生物',6 union all select '化学',3 if object_id('[b]') is not null drop table [b] go create table [b]([xueke] varchar(50),[hits] int) select row_number() over(order by xueke ) as rn,* into #a from a declare @i int ,@j int ,@k varchar(10),@l int set @i =1 select @j=max(rn) from #a while(@i<=@j) begin select @k=[xueke],@l= [hits] from #a where rn =@i insert into b select a,@l from dbo.f_split(@k,',') set @i=@i+1 end select xueke ,sum(hits) as hits from b group by xuekexueke hits
-------------------------------------------------- -----------
化学 7
生物 6
数学 2
物理 10
英语 3
语文 5
(6 行受影响)
相关文章推荐
- 在SQL SERVER中实现Split功能的函数,并在存储过程中使用
- SQL server实现split功能的函数
- SQL server实现split功能的函数
- SQL Server实现类似split功能
- 在SQL SERVER中实现Split功能的函数,并在存储过程中使用
- SQL Server实现类似split功能
- 实现Split功能的函数
- Sql Server实现C#中Split(new char[]{',','+'...}相仿的SplitEx函数!!
- SQL SERVER 实现转置功能
- 实现split类似功能的sql语句
- SQL Server配置管理器的“别名”功能好处,实现内外网统一以及加了端口号导致的限制
- Sql Server 2005 Express数据库导入导出功能的实现
- SQL Server 2000实现一则按类似VB VAL函数功能排序的案例
- VS连接SQL Server 2008,并实现登录和注册功能
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
- SQL Server 2005用存储过程实现高级搜索功能
- 在SQL Server中实现 Limit m, n 的功能
- 利用函数实现split功能
- 在SQL Server 2005中用存储过程实现搜索功能
- SQL Server 2017 RC1 现已实现 Linux 功能扩展