首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql 语句查询字段,根据分隔符截取该字符串,循环输出解决方案

2013-10-21 
sql 语句查询字段,根据分隔符截取该字符串,循环输出表TA中有一字段Fields是按$分割的字符串,Fields内饰精

sql 语句查询字段,根据分隔符截取该字符串,循环输出
表TA中有一字段Fields是按$分割的字符串,


Fields
内饰精品$外饰精品$改装/配件$功能用品$美容/养护$香水/净化$车主用品$汽车电器$安全/应急$影音导航$


现在要求按$分割该字段 循环输出如下表
Fields
内饰精品
外饰精品
改装/配件
功能用品
美容/养护
香水/净化
车主用品
汽车电器
安全/应急
影音导航



求解sql语句写法。
[解决办法]
--> 测试数据: [ta]
if object_id('[ta]') is not null drop table [ta]
create table [ta] (Fields varchar(100))
insert into [ta]
select '内饰精品$外饰精品$改装/配件$功能用品$美容/养护$香水/净化$车主用品$汽车电器$安全/应急$影音导航$'
go

select substring(Fields,b.number,charindex('$',Fields,b.number+1)-b.number) X
from ta a,master..spt_values b
where b.type='p' and b.number between 1 and 100 and substring('$'+left(Fields,len(fields)-1),b.number,1)='$'


[解决办法]

create table #test(
id int identity(1,1),
contents varchar(10)
)
go
declare @str varchar(8000)
set @str='内饰精品$外饰精品$改装/配件$功能用品$美容/养护$香水/净化$车主用品$汽车电器$安全/应急$影音导航$'
select @str='insert #test(contents) select '+''''+replace(@str,'$',''''+' union all select '+'''')
select @str=left(@str,len(@str)-19)
print @str
exec(@str)
go

select * from #test

/*
id          contents
----------- ----------
1           内饰精品
2           外饰精品
3           改装/配件
4           功能用品
5           美容/养护
6           香水/净化
7           车主用品
8           汽车电器
9           安全/应急
10          影音导航

(10 行受影响)


*/

热点排行