导航

[SQL]SQL中把一个字段的数据分多行显示

Posted on 2014-03-24 20:04  beeone  阅读(3046)  评论(0编辑  收藏  举报
其实你完全可以写个自定义函数就OK了 。

===================================================================

create function f_split
(
   @c varchar(2000), --要分割的字符串 
   @split varchar(2)--分隔符号 
) 
returns @t table(col varchar(20)) 
as 
begin 

while(charindex(@split,@c)<>0) 
begin 
insert @t(col) values (substring(@c,1,charindex(@split,@c)-1)) 
set @c = stuff(@c,1,charindex(@split,@c),'') 
end 
insert @t(col) values (@c) 
return 
end 
go 
------------------------------------------------------------
declare @str varchar(100)
set @str = 'a.bb.ccc'

select * from dbo.f_split(@str,'.')
declare @str varchar(100)--定义变量@str
set @str = 'a.bb.ccc' --@str初始值为a.bb.cc

select substring(@str,number,charindex('.',@str+'.',number) - number) as col 

--charindex查询.在@str的位置,substring截取字段@str

from master..spt_values--master数据库里的spt_values表
where [type] = 'p' and number between 1 and len(@str)--len(@str)为变量str的长度
    and substring('.'+@str,number,1) = '.'

解释:master..spt_values表的type字段值为p的,对应,number字段的值是从1至255,

则where条件中,会找到所有满足条件的number值,1行只有1个numbe值,故select的结果形式是:

a

bb

ccc