【问题标题】:Using SQL REPLACE to update a column of text使用 SQL REPLACE 更新一列文本
【发布时间】:2014-08-30 14:22:55
【问题描述】:

我有 1000 个 SQL 行,其中包含数据类型为 LONGTEXT 的列。这些列中的每一列都在列中的某处包含不正确的电话号码。我已尝试使用下面的代码来更新电话号码。

UPDATE table 
SET text = replace('514-921-2738', '514-921-2738', '514-234-0315')

但是,它不是简单地将第一个电话号码 - 514-921-2738 - 替​​换为第二个电话号码 - 514-234-0315,而是将整个文本块替换为第二个电话号码。

换句话说,我运行代码后剩下的就是电话号码。显然,我并不完全了解如何使用 REPLACE 函数,但查看在线文档后,我看不出我做错了什么。有什么想法吗?

【问题讨论】:

  • 您使用的是哪个 DBMS?
  • MySQL。我尝试了下面的建议(现在标记为答案),它奏效了。

标签: mysql sql replace


【解决方案1】:

这就是你要找的东西:

UPDATE table 
SET text = REPLACE(text, '514-921-2738', '514-234-0315');

根据documentation

替换(str,from_str,to_str)

返回字符串 str 和 all 字符串 from_str 的出现次数被字符串 to_str 替换。

在您的查询中,您只需将固定字符串“514-921-2738”替换为“514-234-0315”,然后将其分配给所有文本列值。

【讨论】:

  • 我有点困惑。你说使用 SET text = replace(text, '514-921-2738', '514-234-0315')。我在你使用文本这个词的第二个地方实际上放了什么?列名?
  • 是的,列名。
猜你喜欢
  • 2021-04-24
  • 2010-11-13
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多