此文章发布于66
个月前,部分信息可能已经过时
,请自行斟酌确认。
业务场景
客户端提交用逗号
分隔多个业务单据ID
的字符串到数据库,期待修改这些单据的某些字段信息。
解决方案
数据库中建立表值函数
用于将逗号分隔的字符串
转为多行的表
,然后通过where id in(select id from #table)
的方式更新
函数
-- =============================================
-- 名称:字符串分隔成表
-- 作者:邢港
-- 日期:2018/08/14
-- 说明:用于将类似'1,2,3,4,5,6'的字符串分解成多行,以便于在存储过程中使用 where id in(select * from StrSplitToTable(@Strs,',') )
-- =============================================
create function [dbo].[StrSplitToTable]
(
@Strs varchar(max), --需要被分隔的字符串
@Split varchar(50) --分隔符
)
returns @Temp table (id varchar(50) null)
as
begin
while (charindex(@Split, @Strs)<>0)
begin
insert @Temp(id) values (substring(@Strs, 1, charindex(@Split, @Strs)-1))
set @Strs=stuff(@Strs, 1, charindex(@Split, @Strs), '')
end
insert @Temp(id) values (@Strs)
return
end
使用
update a set a.isFinish=1 where id in(select * from StrSplitToTable('1,2,3,4,5',','))