SQL - 替换多个记录中字符串的特定部分

时间:2017-06-23 06:59:31

标签: mysql sql

是否可以用另一个字符串替换字符串的特定部分? 例如。我有一个包含文件路径的列,我将文件夹下载门户(在我的物理硬盘上)重命名为 download_portal ,因此我必须更改数千个路径数据库记录。

之前和之后的示例记录:

/fileadmin/download portal/test/myfile.jpg

后:

/fileadmin/download_portal/test/myfile.jpg

我们假设这是我的表 fruits

id | path
1  | /fileadmin/download portal/test/apple.jpg
2  | /fileadmin/download portal/test/banana.jpg
3  | /fileadmin/download portal/test/pineapple.jpg

如何使用SQL在每条记录中将download portal更改为download_portal?我可以使用regular expressions来解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

我认为你不一定需要在这里替换正则表达式。只需将download portal正常替换为download_portal即可。以下UPDATE应适用于大多数数据库:

UPDATE fruits
SET path = REPLACE(path, '/download portal/', '/download_portal/')
WHERE path LIKE '%/download portal/%'

注意:我认为搜索/download portal/比纯文本更具限制性,更安全。之所以如此,是因为它消除了意外替换download portal的可能性,.tbd显示为其他更大路径名称的一部分。

答案 1 :(得分:1)

如果您正在使用SSMS,您可以使用REPLACE函数来获得您想要的内容。

  

更新tableName SET ColumnToChange = Replace(ColumnToChange,   'x_name', 'x_myname')