sql server中实现split功能
类别:数据库 浏览量:1560
时间:2015-4-6 sql server中实现split功能
sql server中实现split功能一、实现形式一 :Split 表函数将一个字符串按指定分隔符进行分割,返回一个表
--Split 表函数将一个字符串按指定分隔符进行分割,返回一个表。
create function split(
@string varchar(255),--待分割字符串
@separator varchar(255)--分割符
)returns @array table(item varchar(255))
as
begin
declare @begin int,@end int,@item varchar(255)
set @begin = 1
set @end=charindex(@separator,@string,@begin)
while(@end<>0)
begin
set @item = substring(@string,@begin,@end-@begin)
insert into @array(item) values(@item)
set @begin = @end+1
set @end=charindex(@separator,@string,@begin)
end
set @item = substring(@string,@begin,len(@string)+1-@begin)
if (len(@item)>0)
insert into @array(item) values(substring(@string,@begin,len(@string)+1-@begin))
return
end
测试一
select * from dbo.split('a,b,c,d',',')
或者(待分割字符串末尾多了个逗号)
select * from dbo.split('a,b,c,d,',',')
结果
测试二
select * from dbo.split(',a,,b,c,d',',')
结果
二、方式二:用指定字符串分割后,返回第几个数据
create function [dbo].[fn_split]
(
@inputstr varchar(8000),
@seprator varchar(10),
@p int --要取第几个数据,从0开始,如果要返回分割后的数组列表清删除--##部分即可
)
returns @temp table (a varchar(200))
as
begin
declare @i int
declare @n int --记录循环的次数
set @inputstr = rtrim(ltrim(@inputstr))
set @i = charindex(@seprator, @inputstr)
SET @n =0 --##
WHILE @i>=1
begin
IF @p=@n --##
begin
insert @temp values(left(@inputstr, @i - 1))
end
set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i = charindex(@seprator, @inputstr)
SET @n = @n+1 --##
END
if @inputstr <> '' --最后一位
IF @p=@n --##
insert @temp values(@inputstr)
return
end
测试
select * from dbo.fn_split('aB,bB,cB,dB',',',1)
结果
标签:sql server
您可能感兴趣
- sqlserver2016安装教程(SQL server 2016 安装步骤图文教程)
- sqlserver乐观锁与悲观锁(sql server中死锁排查的全过程分享)
- sqlserver 高级查询(SQL Server2019数据库之简单子查询的具有方法)
- sqlserver如何查找值为null的数据(SQL Server中NULL的正确使用与空间占用)
- 查看SQL SERVER指定数据库中所有的触发器
- sql server 数值类型运算(SQL SERVER2012中新增函数之字符串函数CONCAT详解)
- SQL SERVER存储过程中使用事务与try catch
- sqlserver分区查询语句(SQL Server中的集合运算: UNION, EXCEPT和INTERSECT示例代码详解)
- 修改sqlserver数据库名称步骤(SQL server数据库创建代码 filegroup文件组修改的示例代码)
- sqlserver查看数据表更新时间(SQL Server实现显示每个类别最新更新数据的方法)
- SQL Server作业
- microsoftsqlserver官网(Microsoft SQL Server数据库各版本下载地址集合)
- SQL Server 批量导入数据的方法
- sql server性能调优(SQL Server性能调优之缓存)
- 查看SQL SERVER中某个查询用了多少TempDB空间
- sqlserver最大数据导入量(SQL Server批量插入数据案例详解)
- 今天要吃什么(今天要吃什么菜)
- 三杨之一 南杨 杨溥 安贞履节,酿醴调羹,宰相之气(三杨之一南杨杨溥)
- 今天会下雨吗(今天会下雨吗小说)
- 追连续剧,品古今联4 明代三杨,联妙诗佳(追连续剧品古今联4)
- 三杨 共辅四朝帝王,构建明帝国内阁行政圈(三杨共辅四朝帝王)
- 红色文化进国企(红色文化进国企)
热门推荐
- Resharper的使用
- sql如何把重复数据记录删除(sql分组后二次汇总处理表重复记录查询和删除的实现方法)
- 云服务器必须购买吗(购买真正的云服务器,这几个方面要小心)
- python怎么装opencv(Python基于opencv实现的简单画板功能示例)
- html文字标签设置(如何给HTML标签中的文本设置修饰线)
- mysqlexplain各个字段作用(MySQL EXPLAIN语句的使用示例)
- python 内存读写(详解python持久化文件读写)
- 宝塔面板怎么设置ftp(新安装宝塔Linux面板FTP无法连接的解决方法)
- js判断浏览器的版本
- python面向对象编写案例(Python面向对象程序设计示例小结)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9