日期:2014-05-18  浏览次数:20398 次

分割字符串的问题(再问)
一存储过程中有3个参数
如下:
ALTER     PROCEDURE   Pro_AddIDS(
@IDS   varchar(255),
@IDName   varchar(50),
@IDLevel   int
)
其中@IDS= "1,5,9,6,10 "这样的数据,需要将这些数据分割出来,插到一张表中结构如下:
CREATE   TABLE   IDS
(
    ID   INT,
    IDName   VARCHAR(50),
    IDLevel   int
)
假设:@IDS= "1,5,9,6,10 ",IDName   = "hello "   得到如下结果
/*
IDS                   IDName               IDLevel                                                                            
-----------   --------------------------------------------------  
1                       hello                     null
5                       hello                     null
9                       hello                     null
6                       hello                     null
10                     hello                     null

请帮下忙,谢谢!

------解决方案--------------------
如何将 '2006-01-12|2006-02-13|2006-03-15|2006-11-11|2003-1-1 '按 '| '分割成
2006-01-12
2006-02-13
2006-03-15
2006-11-11
2003-1-1


declare @Days varchar(4000)
declare @tmpDay varchar(10)
set @Days= '2006-01-12|2006-02-13|2006-03-15|2006-11-11|2003-1-1 '
set @tmpDay= ' '
declare @i int
set @i=0
while @i <len(@Days)
begin
set @i=@i+1
if SUBSTRING(@Days,@i,1)= '| '
begin
print left(@Days,@i-1)
set @Days=SUBSTRING(@Days,@i+1,len(@Days))
set @i=0
end
end
print @Days


输出结果:
2006-01-12
2006-02-13
2006-03-15
2006-11-11
2003-1-1


一字段信息包括如下:李三|李三@d.com|公司|单位地址|
我将查询用(Select)只列出李三及单位地址的方法?

create table #t(c1 varchar(100))
insert into #t select 'li4|33@com|mircrosoft|china| '
insert into #t select 'zhang3|zhang3@163.com|IBM|USA| '
insert into #t select '李三|李三@d.com|公司|单位地址| '


select substring(c1,1,charindex( '| ',c1)-1) as name,
reverse(substring(reverse(c1) , 2 , charindex( '| ' , reverse(c1) , 2) - 2)) as address from #t

drop table #t

name address
----- -------
li4 china
zhang3 USA
李三 单位地址

(所影响的行数为 3 行)


declare @s varchar(20)
set @s= '06G512753-08-01 '
select
parsename(t.s,3) part1,
parsename(t.s,2) part2,
parsename(t.s,1) part3
from
(select replace(@s, '- ', '. ') as s) t

------解决方案----------