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

标签 mysql sql

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

前后示例记录:

/fileadmin/download portal/test/myfile.jpg

之后:

/fileadmin/download_portal/test/myfile.jpg

假设这是我的 table 水果:

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 解决吗? ?

最佳答案

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

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

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

关于mysql - SQL - 替换多个记录中字符串的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44715037/

相关文章:

sql - 几乎相似值搜索算法

php - 为什么在 UPDATErequest 中请求 +1 会得到 +2?

sql - R 或 SQL 中间隔的每组引用的最大 n

c++ - last_insert_id 的返回总是正确的吗?

mysql - 为什么相同的查询给出两个不同的结果?

C# - 将多个值添加到 MySQL 中的参数

mysql - SQL - 获取10条记录,按列排序,其中一些列是唯一的

mysql - MySQL数据库有关系约束时如何插入数据

MySQL随机排序并保存在数据库中,无需ID

mysql - 基于计算的订单记录