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

在sql2000数据库中怎样实现里面的数据如下的格式:2,898;234,322;345,该如何解决

2012-01-26 
在sql2000数据库中怎样实现里面的数据如下的格式:2,898234,322345在sql2000数据库中怎样实现里面的数据

在sql2000数据库中怎样实现里面的数据如下的格式:2,898;234,322;345
在sql2000数据库中怎样实现里面的数据如下的格式:2,898;234,322;345

[解决办法]
啥意思?是保存为这个数据格式?还是分解这个字符串,如过是分解,看看这个例.

例如这样一个字符串1&30~10353&32~
"~"代表一条记录,"&"代表字段值
有多少个不确定,就是说不一定就是两条
就是拆分后插入到表中
拆分后
insert into SYS_User_Role ( ROLE_ID,DEPARTMENT_ID ) values ( 1,30 )
insert into SYS_User_Role ( ROLE_ID,DEPARTMENT_ID ) values ( 10353,32 )


create table SYS_User_Role(ROLE_ID int,DEPARTMENT_ID int)
go

create procedure sp_test(@str varchar(8000))
as
begin
declare @n_str varchar(50)
while charindex('~',@str)>0
begin
set @n_str=replace(left(@str,charindex('~',@str)-1),'&',',')
set @str=stuff(@str,1,charindex('~',@str),'')
exec('insert into SYS_User_Role(ROLE_ID,DEPARTMENT_ID) values('+@n_str+')')
end
end
go

exec sp_test '1&30~10353&32~'
go

select * from SYS_User_Role
/*
ROLE_ID DEPARTMENT_ID 
----------- ------------- 
1 30
10353 32
*/
go

drop procedure sp_test
drop table SYS_User_Role
go

热点排行