法个理想情况下的:
--创建测试环境
create table A
(
a int,b int,c varchar(20)
)
insert A select 12,33,'44,55,66'--测试
declare @sql varchar(200)
declare @tmp int
declare @str varchar(20)
set @sql=''
select @str=c,@tmp=charindex(',',c) from A
while @tmp<>0
begin
set @sql=@sql+'select '''+substring(@str,1,@tmp-1)+''' [c] union '
set @str=stuff(@str,1,@tmp,'')
set @tmp=charindex(',',@str)
end
set @sql=@sql+' select '''+@str+''' [c] '
set @sql='select A.a,A.b,B.c from A right join ('+@sql+') B on 1>0'
--print @sql
exec(@sql)--删除测试环境
drop table A--结果
/*
(1 row(s) affected)a b c
----------- ----------- ----
12 33 44
12 33 55
12 33 66
*/
--创建测试环境
create table A
(
a int,b int,c varchar(20)
)
insert A select 12,33,'44,55,66'--测试
declare @sql varchar(200)
declare @tmp int
declare @str varchar(20)
set @sql=''
select @str=c,@tmp=charindex(',',c) from A
while @tmp<>0
begin
set @sql=@sql+'select '''+substring(@str,1,@tmp-1)+''' [c] union '
set @str=stuff(@str,1,@tmp,'')
set @tmp=charindex(',',@str)
end
set @sql=@sql+' select '''+@str+''' [c] '
set @sql='select A.a,A.b,B.c from A right join ('+@sql+') B on 1>0'
--print @sql
exec(@sql)--删除测试环境
drop table A--结果
/*
(1 row(s) affected)a b c
----------- ----------- ----
12 33 44
12 33 55
12 33 66
*/
解决方案 »
- 我用Macromedia Dreamweaver做的ASP,里面涉及建立的记录集,上面三附图有关情况麻烦解决!
- 急问:表并集该怎么做?
- 两个sql语句对比,性能怎么差这么多,想不通
- 触发器--统计问题
- 关于表的转换
- xp能装sql server吗
- SQL 存储过程怎样 得到 调用该存储过程的客户端的信息(如:网卡物理地址,计算机名 等...)
- 修改计算机的名字导致SQL7.0不能启动,请问有什么修补的方法而不用重新安装SQL?
- 用sp_executeSQL返回数据问题?求肋
- 100请教,不够再加......
- 查了很多帖子也无法解决:MDB导入SQL server中总是报错
- 关于触发器的基础问题
expression是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。start是一个整数,指定子串的开始位置。length是一个整数,指定子串的长度(要返回的字符数或字节数)。STUFF ( character_expression , start , length , character_expression ) 参数
character_expression由字符数据组成的表达式。character_expression 可以是常量、变量,也可以是字符或二进制数据的列。start是一个整形值,指定删除和插入的开始位置。如果 start 或 length 是负数,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。length是一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。CHARINDEX ( expression1 , expression2 [ , start_location ] ) 参数
expression1一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。expression2一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。start_location在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。