【问题标题】:mysql find / replace characters at start and end of a string, but not middle of stringmysql在字符串的开头和结尾查找/替换字符,但不是字符串的中间
【发布时间】:2012-01-18 15:13:12
【问题描述】:

短版: 我需要会改变的mysql代码

[href="http://a-random-domain.com"]超链接[/href]

进入

超链接

  • 不会弄乱域部分,并且
  • 不会意外转换字段文本中可能出现的任何不相关的 "] 实例。
  • 域每次都是唯一的/不同的 遇到过。

长版: 我正在迁移旧数据库以用于新应用程序。旧数据库有一个文本字段,其中包含以下内容:

这是一个包含 [href="http://somedomain.com"]hyperlink[/href] 和更多数据以及可能的其他超链接的数据字段。

我需要将其更新为标准 html,例如

这是一个包含 hyperlink 和更多数据以及可能还有其他超链接的数据字段。

使用 REPLACE 修复 [href= 和 [/href] 非常简单

update table set field = replace(field, '[href=', '<a href=');

但是我在 a href 标记的 "] 右括号上被绊倒了。并且在数据库中还有其他 "] 实例不应该被修改,所以我不能只替换 "]

mysql 是否有某种正则表达式“前瞻”或其他方式来完成此操作?

非常感谢!

【问题讨论】:

  • 可能会查看stackoverflow.com/questions/986826/… 吗?但是,如果这是一次性交易,您可能会考虑在客户端进行;例如用于 SELECT * / UPDATE 每一行的简短 Perl 脚本。也许效率低下,但可用于像这样的简单修复。
  • 谢谢!不确定这对我有用,因为像“] 这样的字符只需要在用作超链接的一部分时变成 ">。如果没有提供 mysql 解决方案,我肯定会使用类似 Perl 的脚本从 mysql 中处理这个问题。再次感谢
  • 在您的“短版”中,我认为您的意思是[href="http://a-random-domain.com"]hyperlink[/href] 而不仅仅是[href="http://a-random-domain.com"]
  • ruakh 你是对的 - 编辑修复。谢谢

标签: mysql regex replace


【解决方案1】:

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

MySQL 仅支持用于“评估”目的的正则表达式函数。 因此,您不能将其用于替换或操作数据。使用高级脚本语言会更好。

【讨论】:

    猜你喜欢
    • 2012-12-03
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2015-08-26
    相关资源
    最近更新 更多