【问题标题】:mysql - replace string with percentage signmysql - 用百分号替换字符串
【发布时间】:2015-11-17 04:04:30
【问题描述】:

在特定列中,我需要用“http://”批量替换“http://%20”的所有实例。目的是摆脱表示空白空间的 %20 HTML 实体。

我试过了

 update content set fulltext = replace(fulltext,'http://%20','http://');

但不断收到错误代码 #1064。

content 是表名,flutist 是列。

我想必须对百分号做点什么,因为 MySQL 将 to 解析为通配符。

Ubuntu 14.04 LTS 上的 MySQL 5.5.43。

【问题讨论】:

  • fulltext 是保留字。在字段名称周围添加反引号 ``` 或使用不同的字段名称
  • % 是一个特殊字符。你试图逃避它吗?像这样:replace(fulltext,'\%20','');
  • @Pekka웃 。 . .您应该添加您的评论作为答案,以便 OP 可以接受它。

标签: mysql replace special-characters database-administration


【解决方案1】:

fulltext 是reserved word.

添加反引号

`fulltext` 

围绕字段名称或使用不同的字段名称。

【讨论】:

  • 错误消失了。谢谢。现在我只需要找到一种使用通配符查找匹配项的方法。 update kqju_content set fulltext = replace(fulltext,'%%20http%','http://');没有做到这一点。以为 MySQL 会将第一个 % 解析为可操作的通配符,但事实并非如此。
  • @manchine 不确定您希望第一个 % 做什么? REPLACE() 应该在任何地方替换字符串,通配符不是必需的,不是吗?
  • 不完全;运行查询后,我仍然找到 %20http:// 的实例。好像它的语法与它们不匹配。
  • % 通常不是特殊字符。当使用LIKE 时,它仅被视为通配符。
  • 也许该列在%20 和http:// 之间包含一些不可打印的字符,例如\0?这可以解释为什么 REPLACE 并非在所有情况下都有效。
猜你喜欢
  • 2011-12-23
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
相关资源
最近更新 更多