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

字符串删除问题?
有下列数据:
0101020000116300
0101020000100200
0101060000100600
0101080000131900
想把中间的四个0和后面的两个0删除掉,变成下面的形式:
0101021163
0101021002
0101061006
0101081319
如何操作?


------解决方案--------------------
看样子,你要去掉的0位置是固定的
select stuff(stuff ( '0101020000116300 ',7,4, ' '),11,2, ' ')
------解决方案--------------------
create table tb(col varchar(20))
insert into tb values( '0101020000116300 ')
insert into tb values( '0101020000100200 ')
insert into tb values( '0101060000100600 ')
insert into tb values( '0101080000131900 ')
go
update tb
set col = left(replace(col, '0000 ', ' '),len(replace(col, '0000 ', ' '))-2)
select * from tb
drop table tb
/*
col
--------------------
0101021163
0101021002
0101061006
0101081319
(所影响的行数为 4 行)
*/
------解决方案--------------------
select replace(replace( '0101020000116300 ', '0000 ', ' '),right(replace( '0101020000116300 ', '0000 ', ' '),2), ' ')

0101021163

(1 row(s) affected)

------解决方案--------------------
--固定位置的
select stuff(stuff ( '0101020000116300 ',7,4, ' '),11,2, ' ')
--非固定位置的
select replace(replace( '0101020000116300 ', '0000 ', ' '), '00 ', ' ')
--非固定位置的 只针对成倍的
select replace( '0101020000116300 ', '00 ', ' ')

------解决方案--------------------
你没说字段名
select stuff(stuff (字段名,7,4, ' '),11,2, ' ')

------解决方案--------------------
select stuff(stuff (字段名,7,4, ' '),11,2, ' ') from 表名
------解决方案--------------------
....
update 表名 set 字段名 = stuff(stuff (字段名,7,4, ' '),11,2, ' ')