总述
最近接了一个需求,是要处理一个字符串。前前后后改了两版,写一下修改的崎岖的修改的方案。
需求描述
原始的需求是,我们在集中交易系统的一个注销柜员功能出现了错误,在注销柜员时该功能会先去检查一遍审核流水,只有在没有审核流水的时候才允许销户,然后还要更新需要这个被注销柜员的去审核的记录。但是由于历史原因,柜员id分配没有做好,早期的柜员id比较短,出现了新的柜员的id比较长,可能会包含老的柜员的id,这个时候去更新掉复核记录就会出问题。
需求翻译过来就是,现在有一个长字串,字串的组成是一个个id由分号隔开,例如:123,321,12345。这时给出一个id,把长字符串里和id相等的id去掉,并且保留分号隔开的格式。如给出的id是321,处理后的字串是123,12345。
处理
1.原始代码处理段
//删除柜员的审核配置
//add 条件
Update("update run.dbo.confirmoperlevel set "
"and_operid = case "
//and_operid 只配置了此柜员 如: 14
"when charindex('%d', and_operid) = 1 and charindex(',%d', and_operid) = 0 and charindex('%d,', and_operid) = 0 then replace(and_operid,'%d','') "
//and_operid 配置了多个柜员,此柜员在中间或最后 如:11,14,16 11,14
"when charindex(',%d',and_operid) > 0 then replace(and_operid,',%d','') "
//and_operid 配置了多个柜员,此柜员在中间或第一 如:11,14,16 14,16
"when charindex('%d,',and_operid) > 0 then replace(and_operid, '%d,','') "
"end "
"where charindex('%d',and_operid) > 0 and serverid = %d ",
BusParam.nOperid, BusParam.nOperid, BusParam.nOperid, BusParam.nOperid,
BusParam.nOperid, BusParam.