当前位置: 代码迷 >> Sql Server >> 这样的SQL怎么写? 写一个存储过程
  详细解决方案

这样的SQL怎么写? 写一个存储过程

热度:107   发布时间:2016-04-24 08:46:02.0
这样的SQL如何写? 写一个存储过程,
传递过来一个变量,形如“a,b,c,d,e,”  ,这个变量是由很多字符串组成的,由逗号分隔,然后,

对表中的字段name进行update,如果name字段的值,没有a,就update 表 set name = name + a,如果有a了,就不进行update了,接着对b判断是否update,道理一样。就是含有某字符了,就不update,没有就update原来的字段值加上这个字符。

写个存储过程,没搞出来还,
------解决思路----------------------

-- 。。。。。。。
create table test(id int , name varchar(100))
go
insert into test(id , name) values(1,'abc'),(2,'ad')
go
select * from test 
go
create proc sp_data(@v varchar(100))
as
begin
    declare @sql varchar(1000)
    declare @tmp varchar(100)
    while (len(@v) > 0 )
    begin
        set @tmp = substring(@v,1,charindex(',',@v,1)-1)
        set @v = substring(@v,len(@tmp) + 2,len(@v))
        update test set name = name + @tmp where name not like '%' + @tmp + '%'
    end 
end
go
sp_data 'a,b,c,d,e,f,m,'
go
select * from test 
go
drop proc sp_data
go
drop table test 
go


(2 行受影响)
id          name
----------- ----------------------------------------------------------------------------------------------------
1           abc
2           ad

(2 行受影响)


(2 行受影响)
id          name
----------- ----------------------------------------------------------------------------------------------------
1           abcdefm
2           adbcefm

(2 行受影响)


  相关解决方案