26

我在 SQL Server 2008 数据库中有一个名为Meter. 该表有一个名为 的列Name

列中的每个条目Name都有以下前缀ZAA\。我想将此前缀更改为ZAA_不影响列中的其余文本。

4

3 回答 3

30
UPDATE Meter
SET Name = 'ZAA_' + SUBSTRING(Name, 4, LEN(Name))
WHERE SUBSTRING(Name, 1, 4) = 'ZAA\'

编辑:

或者正如@Damien_The_Unbliever 所说,使用索引:

UPDATE Meter
SET Name = 'ZAA_' + SUBSTRING(Name, 4, LEN(Name))
WHERE Name LIKE 'ZAA\%'

编辑

根据您的评论,请尝试使用此语句来修复附加\

UPDATE Meter
SET Name = 'ZAA_' + SUBSTRING(Name, 5, LEN(Name))
WHERE Name LIKE 'ZAA_\%'
于 2013-09-02T10:32:09.740 回答
2

MYSQL:

UPDATE Meter
SET Name = CONCAT('ZAA' ,'_', SUBSTRING(Name, 4, LENGTH(Name)))
WHERE Name LIKE 'ZAA\%'
于 2015-03-31T05:16:44.143 回答
2

这是 SQLFiddel 演示

以下是您可以尝试的查询

CREATE TABLE Meter
    ([Name] varchar(7))
;

INSERT INTO Meter
    ([Name])
VALUES
    ('ZAA\001')
;


select * from Meter;

Update Meter
   set Name = stuff(Name,4,1,'_')
 Where SUBSTRING(Name, 1,4) ='ZAA' + Char(92);

select * from Meter;
于 2013-09-02T10:32:39.170 回答