日期:2014-05-17  浏览次数:20456 次

求教可以批量替换指定字符串(含)后面的全部内容的sql写法
有一个表Table,其中Name字段中现有数据如下(长度不定):

1aaabbbcccdd.1
12aaabbbccccd.ada
123aaabbbccc.8?
1234aaabbbcc.1

现在想批量替换aaabbb(含)及其后面的全部字符为空,只保留aaabbb前面的字符即可

请高手指教一下写法,非常感谢
------解决方案--------------------

declare @string varchar(20)
set @string ='123aaabbb13482'
select stuff(@string,CHARINDEX ('aaabbb',@string),len(@string),'')


------解决方案--------------------
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (col nvarchar(34))
insert into [TB]
select '1aaabbbcccdd.1' union all
select '12aaabbbccccd.ada' union all
select '123aaabbbccc.8?' union all
select '1234aaabbbcc.1'

select * from [TB]


SELECT SUBSTRING(col,0,CHARINDEX('aaabbb',col)) FROM dbo.TB
/*
1
12
123
1234*/

------解决方案--------------------

update table 
set name=left(name,charindex('aaabbb',name)-1)

------解决方案--------------------
select  substring(name,1,charindex('aaabbb',name) - 1)
------解决方案--------------------
select SUBSTRING(name,0,charindex('aaabbb',name,1)) as name
from tablename
--更新:
update tablename set name= SUBSTRING(name,0,charindex('aaabbb',name,1))