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

Bla*_*ack 3 mysql sql

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

之前和之后的示例记录:

/fileadmin/download portal/test/myfile.jpg
Run Code Online (Sandbox Code Playgroud)

后:

/fileadmin/download_portal/test/myfile.jpg
Run Code Online (Sandbox Code Playgroud)

假设这是我的餐桌水果

id | path
1  | /fileadmin/download portal/test/apple.jpg
2  | /fileadmin/download portal/test/banana.jpg
3  | /fileadmin/download portal/test/pineapple.jpg
Run Code Online (Sandbox Code Playgroud)

如何使用 SQL 将每条记录更改download portal为?download_portal可以用正则表达式解决吗?

Tim*_*sen 10

我认为您不一定需要在这里替换正则表达式。只需正常替换download portalto 就download_portal可以了。以下内容UPDATE应该适用于大多数数据库:

UPDATE fruits
SET path = REPLACE(path, '/download portal/', '/download_portal/')
WHERE path LIKE '%/download portal/%'
Run Code Online (Sandbox Code Playgroud)

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