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

如何取出规和中包含的数值
有一些材料的规格都是用各数值连起来表示的,如23*35;24*56*56等等,如何从这个字段里把各个数值取出来呢

------解决方案--------------------
这是前两天的一个例.

转文

例如这样一个字符串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