在字段post_content中,我有近800行的字符串:
http://somesite.com/">This is some site</a>
我需要从">
开始删除所有内容,以便只留下网址。我无法直接查找和替换,因为文本是唯一的。
任何线索?这是我第一次涉足MySQL数据库修改,但在发布之前我确实进行了广泛的搜索。
谢谢,
〜凯尔〜
答案 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中进行了一些漂亮的查找和替换工作。没有你的建议那么复杂,但它有效。
再次感谢, 〜〜凯尔