SQL里实现类型String.Split()方法
2012-09-22 10:38
423 查看
题目有点标题党哈~不好意思,其实就是今天新学的一个小方法,分享一下给大家。
数据库中,总是遇到一些字段内容,想根据某个标识截取一下字符串,可是都想不到好办法,如果能有一个像ASP.NET里面的Split方法,那该多好,多方便啊!
为什么不可以?我们自己写一个函数不就可以解决了吗?好吧,说干就干,自己来写个SplitString函数!
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE function [dbo].[SplitString] ( @Input nvarchar(max), @Separator nvarchar(max)=',', @RemoveEmptyEntries bit=1 ) returns @TABLE table ( [Id] int identity(1,1), [Value] nvarchar(max) ) as begin declare @Index int, @Entry nvarchar(max) set @Index = charindex(@Separator,@Input) while (@Index>0) begin set @Entry=ltrim(rtrim(substring(@Input, 1, @Index-1))) if (@RemoveEmptyEntries=0) or (@RemoveEmptyEntries=1 and @Entry<>'') begin insert into @TABLE([Value]) Values(@Entry) end set @Input = substring(@Input, @Index+datalength(@Separator)/2, len(@Input)) set @Index = charindex(@Separator, @Input) end set @Entry=ltrim(rtrim(@Input)) if (@RemoveEmptyEntries=0) or (@RemoveEmptyEntries=1 and @Entry<>'') begin insert into @TABLE([Value]) Values(@Entry) end return end
函数、表都建好了,下面调用测试一下吧:
declare @str1 varchar(max), @str2 varchar(max), @str3 varchar(max) set @str1 = '1,2,3' set @str2 = '1###2###3' set @str3 = '1###2###3###' select [Value] from [dbo].[SplitString](@str1, ',', 1) select [Value] from [dbo].[SplitString](@str2, '###', 1) select [Value] from [dbo].[SplitString](@str3, '###', 0)
结果,截个图来看一下:
里面还有个自增的[Id]字段哦,在某些情况下有可能会用上的,例如根据Id来保存排序等等。
例如根据某表的ID保存排序:
update a set a.[Order]=t.[Id] from [dbo].[表] as a join [dbo].SplitString('1,2,3', ',', 1) as t on a.[Id]=t.[Value]
相关文章推荐
- SQL SPLIT() 方法实现
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- Sql中split方法实现
- Android开发之 当前日期String类型转date类型 java代码中实现方法
- C# 数据库sql中用参数的方法来执行UPDATE命令,实现更新dataTime类型
- 2011-07-26 10:06 Sql中split方法实现
- sql实现split方法,带拆分结果排序
- javascript-string类型的方法(match,replace,split,concat+join)
- PL/SQL实现JAVA中的split()方法的小例子
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第六部分 基础数据类型之BOOLEAN)
- c++使用 STL string 实现split,trim和replace方法
- c++ 一次完整读文件 及 实现string 的split方法
- 关于java中String类型的split方法问题
- 写一个方法clone; 实现js五种数据类型(string, number, boolean, array, object)的复制
- Lua语言string对象的split方法实现
- SQL实现字符串Split方法
- 使用SQL语句实现SPLIT效果的几种方法
- JavaScript的String类型replace()方法介绍和使用replace()方法实现简单html模板替换功能
- MyBatis-xml配置SQL文件中,传入List数组、基本类型String、int……、与自定义类型的方法
- 借用.net framework的string.Fromat(...),实现一个执行参数化SQL的方法