SQL中的REPLACE无法预测

时间:2017-06-18 18:59:16

标签: mysql sql

我想用另一个字符串替换字符串中特定字符的每个实例,' s' &安培; '#'在这种情况下 所以,圣何塞成了#an Jo#e 我使用以下查询:

UPDATE city SET NewName = REPLACE(Name,'s','#') WHERE(ID<5000);
UPDATE city SET NewName = REPLACE(Name,'S','#') WHERE(ID<5000);
SELECT * FROM city WHERE Name LIKE "%s%" OR "%S%";

这就是表格的样子:

ID   Name           CountryCode District Population NewName
4   Mazar-e-Sharif  AFG Balkh   127800  Mazar-e-#harif

5   Amsterdam   NLD Noord-Holland   731200  Amsterdam

15  Enschede    NLD Overijssel  149544  Enschede

19  Zaanstad    NLD Noord-Holland   135621  Zaanstad

20  ´s-Hertogenbosch   NLD Noord-Brabant   129170  ´s-Hertogenbosch

21  Amersfoort  NLD Utrecht 126270  Amersfoort

22  Maastricht  NLD Limburg 122087  Maastricht

33  Willemstad  ANT Curaçao    2345    Willemstad

我正在使用this database。我还在表中添加了一个新列,NewName

2 个答案:

答案 0 :(得分:1)

一步完成:

UPDATE city
    SET NewName = REPLACE(REPLACE(Name, 's', '#'), 'S', '#') 
    WHERE(ID < 5000);

实际上,如果列的排序规则不区分大小写,则第一个会这样做。

答案 1 :(得分:0)

尝试使用下一种方法:

UPDATE city SET NewName = REGEXP_REPLACE(Name, '/[s]/ig', '#') WHERE(ID<5000);

或更新您的请求

UPDATE city SET NewName = REPLACE(REPLACE(Name,'s','#'),'S','#') WHERE(ID<5000);