mysql - 如何使用 SQL 根据模式更新列内的特定数据?

标签 mysql sql sql-update pattern-matching

由于某些原因,在我的数据库中,在表列中,我有一些带有绝对 URL 的数据,如下所示:

+---------------------------------+
|               url               |
+---------------------------------+
| /foo/12                         |
| http://www.myexample.com/foo/13 |
| http://www.myexample.com/foo/14 |
+---------------------------------+

我想将绝对网址更新为相对网址,如下所示:

+---------------------------------+
|               url               |
+---------------------------------+
| /foo/12                         |
| /foo/13                         |
| /foo/14                         |
+---------------------------------+

如何使用 SQL 查询执行此操作?

最佳答案

您可以使用REPLACE(str,from_str,to_str)

返回字符串 str,并将所有出现的字符串 from_str 替换为字符串 to_str。 REPLACE() 在搜索 from_str 时执行区分大小写的匹配。

因此您可以在更新查询中编写replace(url,' http://www.myexample.com ','')

update table_name set url = replace(url,'http://www.myexample.com','') where 1=1

关于mysql - 如何使用 SQL 根据模式更新列内的特定数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50005494/

相关文章:

php - 下拉列表不显示数据

mysql - SQL 查询 - 在小于或等于日期加入

sql - 监控 SQL 性能和负载

SQL SELECT 子句与特定顺序的 WHERE 语句

mysql - 总计更新

php - 如何为谷歌地图创建可拖动的自定义标记列表

sql - Oracle 对 View 使用提示索引并强制其到基表

php - MySQL 表行不会更新

sql - 在 SQL SERVER 的 UPDATE 语句中使用 CASE 选择 SET 的列

MySQL 连接与先前连接的条件