2014-02-26 31 views
1

我们有以下几点:UPDATING字符串的一部分,为

create table #a_table 
(names char(10)) 
insert into #a_table 
values 
('A;B;C;'), 
('B;C;D;'), 
('A;B;C;E;'), 
('A;C;'), 
('A;B;'), 
('A;'), 
('A;C;E;'); 

我们如何update表和变动c的每一个实例;与X; Y;

所以
A; B; C;会变成A; B; X; Y;
A; C; E;会变成A; X; Y; ​​E;


编辑

标准ANSI方法是SQL服务器上的兼容将是prefereable。

+1

什么是你的DBMS? –

+0

@AlmaDo标准解决方案很好 – whytheq

+0

@whytheq Alma询问您是否使用MSSQL,MySQL或任何其他数据库软件 – Liath

回答

1

这一切都取决于您实际使用的数据库。在MSSQL服务器可以使用SQL replace功能

update #a_table set names = replace(names, 'C;', 'X;Y;') 

其它数据库也有类似的功能(如MySQL的一个here

+1

如果DMBS不是MSSQL,该怎么办?如果'C'会在字符串的末尾呢? (比如'A; B; C') –

+0

@AlmaDo,是的,我刚刚扩展了MySQL。希望该OP将扩大 – Liath

+0

@AlmaDo重申您的第二点 - 发布的OP实际上有C;在字符串的末尾,所以我假设它总是以分号结束 – Liath