MySQL:在某些字符之间查找和替换

时间:2011-05-04 21:54:27

标签: mysql

在字段post_content中,我有近800行的字符串:

http://somesite.com/">This is some site</a>

我需要从">开始删除所有内容,以便只留下网址。我无法直接查找和替换,因为文本是唯一的。

任何线索?这是我第一次涉足MySQL数据库修改,但在发布之前我确实进行了广泛的搜索。

谢谢,

〜凯尔〜

5 个答案:

答案 0 :(得分:1)

从此网站:http://www.regular-expressions.info/mysql.html

  

LIB_MYSQLUDF_PREG

     

如果您希望数据库具有更强的正则表达能力,可以考虑使用LIB_MYSQLUDF_PREG。这是一个导入PCRE library的MySQL用户函数的开源库。 LIB_MYSQLUDF_PREG仅以源代码形式提供。要使用它,您需要能够编译它并将其安装到MySQL服务器中。安装此库不会以任何方式更改MySQL的内置正则表达式支持。它只是提供以下附加功能:

来了......

  

PREG_CAPTURE从字符串中提取正则表达式匹配。 PREG_POSITION返回正则表达式与字符串匹配的位置。 PREG_REPLACE对字符串执行搜索和替换。 PREG_RLIKE测试正则表达式是否匹配字符串。

听起来正是你要找的东西。

  

所有这些函数都将正则表达式作为其第一个参数。此正则表达式必须格式化为Perl正则表达式运算符。例如。要测试正则表达式是否与主题不敏感匹配,您将使用MySQL代码PREG_RLIKE('/ regex / i',subject)。这类似于PHP's preg functions,它还需要PHP字符串中正则表达式的额外//分隔符。

答案 1 :(得分:0)

请参阅此帖子:How to do a regular expression replace in MySQL?

或者您可以在任何通过每条记录的语言中编写脚本,进行正则表达式替换然后更新字段。有关正则表达式的详细信息,请参阅此处:http://www.regular-expressions.info/reference.html

答案 2 :(得分:0)

有很多选择。一种可能是使用SUBSTRING_INDEX()

UPDATE
    table
SET field = SUBSTRING_INDEX( field, '">', 1 )

答案 3 :(得分:0)

这是可能的 - User Defined Functions有一种语法可以传递一个与链接匹配的正则表达式模式,并删除其他所有内容。

然而,对于刚接触MySQL的人来说,这是非常复杂的,从你的问题来看,这听起来像是一次性的。在这种情况下 - 为什么不只是使用Excel然后重新导入数据?

答案 4 :(得分:0)

好东西!

一切似乎都可以通过一点时间和自我教育来实现。

最后,我在Sequel Pro中将该表格导出为CSV,并在Coda中进行了一些漂亮的查找和替换工作。没有你的建议那么复杂,但它有效。

再次感谢, 〜〜凯尔