分割字符串的问题(再问)
一存储过程中有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
------解决方案----------