SQL Server逗号分隔字符串拆成临时表
来源:互联网 发布:淘宝卖家如何玩转微淘 编辑:程序博客网 时间:2024/06/06 05:22
【IT168 技术文档】在与数据库交互的过程中,我们经常需要把一串ID组成的字符串当作参数传成存储过程获取数据。很多时候我们希望把这个字符串转成集合以方便用于in操作。 有两种方式可以方便地把这个以某种符号分隔的ID字符串转成临时表。
方式一:通过charindex和substring。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->create function func_splitstring
(@str nvarchar(max),@split varchar(10))
returns @t Table (c1 varchar(100))
as
begin
declare @i int
declare @s int
set @i=1
set @s=1
while(@i>0)
begin
set @i=charindex(@split,@str,@s)
if(@i>0)
begin
insert @t(c1) values(substring(@str,@s,@i-@s))
end
else begin
insert @t(c1) values(substring(@str,@s,len(@str)-@s+1))
end
set @s = @i +1
end
returnend
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->create function func_splitstring
(@str nvarchar(max),@split varchar(10))
returns @t Table (c1 varchar(100))
as
begin
declare @i int
declare @s int
set @i=1
set @s=1
while(@i>0)
begin
set @i=charindex(@split,@str,@s)
if(@i>0)
begin
insert @t(c1) values(substring(@str,@s,@i-@s))
end
else begin
insert @t(c1) values(substring(@str,@s,len(@str)-@s+1))
end
set @s = @i +1
end
returnend
执行:select * from dbo.func_splitstring('1,2,3,4,5,6', ',')
结果:
方式二:通过XQuery(需要SQL 2005以上版本)。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->create function func_splitid
(@str varchar(max),@split varchar(10))
RETURNS @t Table (c1 int)
AS
BEGIN
DECLARE @x XML
SET @x = CONVERT(XML,'<items><item id="' + REPLACE(@str, @split, '"/><item id="') + '"/></items>')
INSERT INTO @t SELECT x.item.value('@id[1]', 'INT') FROM @x.nodes('//items/item') AS x(item)
RETURN
END
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->create function func_splitid
(@str varchar(max),@split varchar(10))
RETURNS @t Table (c1 int)
AS
BEGIN
DECLARE @x XML
SET @x = CONVERT(XML,'<items><item id="' + REPLACE(@str, @split, '"/><item id="') + '"/></items>')
INSERT INTO @t SELECT x.item.value('@id[1]', 'INT') FROM @x.nodes('//items/item') AS x(item)
RETURN
END
执行:select * from dbo.func_splitid('1,2,3,4,5,6', ',')
结果:
- SQL Server逗号分隔字符串拆成临时表
- SQL Server逗号分隔字符串拆成临时表
- SQL Server逗号分隔字符串拆成临时表
- SQL Server逗号分隔字符串拆成临时表
- sql把逗号分隔的字符串拆成临时表
- sql把逗号分隔的字符串拆成临时表
- sql把逗号分隔的字符串拆成临时表
- sql把逗号分隔的字符串拆成临时表
- sqlserver中利用Tran_sql把逗号分隔的字符串拆成临时表
- SQL Server将表的一列转换成逗号分隔的字符串
- SQL Server 2005中拆分逗号分隔的字符串或把逗号分隔的字符串拆成数据表的函数
- sql字符串已逗号分隔
- sql逗号分隔字符串转化成table的函数
- sql将逗号分隔的字符串转为表Table
- sql 将逗号分割的字符串存入临时表
- Sql Server 千位分隔符 3位逗号分隔
- sql server中用逗号分隔字符串,如何用like正确匹配
- sql server 去逗号字符串
- RTMP协议分析
- 上传图片并给图片加水印(公共类积累)
- 对重复数据删除的一些误解(一)
- Spring学习一之IOC工作原理
- Vector容器的一点说明
- SQL Server逗号分隔字符串拆成临时表
- 榨干 PHP,不得不转的一篇PHP使用技巧!
- 使用Maven的antrun插件启动Tomcat的两种方法
- android GPS定位和卫星个数(源码)
- Counting Objects in C++
- poj 1056 判断前缀
- c++中vector排序的问题二(转载)
- H264 视频文件 帧格式 传输封装等
- C/C++中指针和引用之相关问题研究