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
您可能感兴趣
- sqlserver删除表的第一行数据(sql server删除前1000行数据的方法实例)
- sql server作业的调度信息中各列的含义
- 如何使java与sqlserver数据库连接(java连接mysql数据库 java连接sql server数据库)
- sql server 动态建表(SQL Server如何通过创建临时表遍历更新数据详解)
- sql server建表语句带字段说明(SqlServer给表增加多个字段的语法)
- sqlserver常用基本数据类型有哪些(浅述SQL Server的语句类别 数据库范式 系统数据库组成)
- sqlserver代理无法启动错误1607(SQL Server代理:理解SQL代理错误日志处理方法)
- sqlserver表分区步骤(行转列之SQL SERVER PIVOT与用法详解)
- Sql Server系统数据库的作用
- Sql Server常用系统存储过程
- sql server占cpu高
- sqlserver调试存储过程(sql server2008调试存储过程的完整步骤)
- sqlserver常用流控语句(SQL Server实现自动循环归档分区数据脚本详解)
- sqlserver表分区缺点(SQL Server 公用表表达式CTE实现递归的方法)
- sql server设置自增(sql server建表时设置ID字段自增的简单方法)
- sql server中dense_rank和row_number的区别
- 一道高中题-求杯子的高度(一道高中题-求杯子的高度)
- 网坛停摆三巨头亏损惨重,费德勒跌幅88 纳达少赚2400万(网坛停摆三巨头亏损惨重)
- Beyond 版本《无人深空》主线任务攻略 阿特拉斯之道(版本无人深空主线任务攻略)
- 全球科技界最有钱大佬TOP 15 你知道几位(全球科技界最有钱大佬TOP)
- 2主力后腰缺阵 泰山队奇兵有望获重用,赛季0出场,迎来中超首秀(泰山队奇兵有望获重用)
- 三分71 生死战爆发 篮网旧将丁威迪今天成奇兵,助队赢球(三分71生死战爆发)
热门推荐
- vue慢动作怎么操作(vue开发之moment的介绍与使用)
- 云服务器被流量攻击了(云服务器怎么预防被攻击?)
- dede高性能设置(让dedecms生成html速度快1倍)
- dedecms样式的引入(dedecms 5.7 文章不能上传图片的解决方法Upload filetype not allow)
- sqlserver最大数据导入量(SQL Server批量插入数据案例详解)
- docker容器使用流程(在Docker构建的容器中实现安装ping工具)
- ftp文件操作三种类型(详解ftp创建文件权限问题)
- smarty模板的使用方法实例分析(smarty模板的使用方法实例分析)
- 在谷歌浏览器中模拟网站在网络慢的访问速度
- serv-u设置文件夹权限(serv_U 域离线 解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9