如何解决在MYSQL中使用REGEXP替换子字符串
| 在我的论坛中,我有一个BB代码来显示YouTube视频。 以下选项可用于提取youtube视频代码并使用此代码构建嵌入代码:[youtube]http://www.youtube.com/watch?v=_OBlgSz8sSM&feature=related[/youtube]
[youtube]http://www.youtube.com/watch?v=_OBlgSz8sSM[/youtube]
[youtube]_OBlgSz8sSM[/youtube]
所有这些选项均返回youtube视频代码__OBlgSz8sSM
升级到新版本的论坛后,带有youtube链接解析的前两个选项不起作用,只有带有[youtube] _OBlgSz8sSM [/ youtube]的最后一个选项有效。
这些BB代码是论坛帖子的一部分,不在数据库的单独字段中。
我的目标是替换所有以[youtube]开头并以[/ youtube]结尾且包含?v =的子字符串
[youtube]11 characters from ?v=[/youtube]
我正在使用MySQL
表名是POST
包含这些BB代码的字段名称为PAGETEXT
您能帮我建立此更新吗?
解决方法
编辑:以前的答案是完全错误的。
不使用正则表达式:
UPDATE POST SET PAGETEXT = REPLACE(PAGETEXT,\'[youtube]http://www.youtube.com/watch?v=\',\'[youtube]\');
UPDATE POST SET PAGETEXT = REPLACE(PAGETEXT,\'[youtube]www.youtube.com/watch?v=\',\'[youtube]youtube.com/watch?v=\',\'&feature=related[/youtube]\',\'[/youtube]\');
这将通过直接搜索删除并替换您不需要的数据。还有其他未在原始帖子中列出的模式/格式吗?
使用测试数据:
SET @test = \'test [youtube]youtube.com/watch?v=_OBlgSz8sSM&feature=related[/youtube] test\';
SET @test = REPLACE(@test,\'[youtube]\');
SET @test = REPLACE(@test,\'[/youtube]\');
SELECT @test;
mysql> SELECT @test;
+------------------------------------------+
| @test |
+------------------------------------------+
| test [youtube]_OBlgSz8sSM[/youtube] test |
+------------------------------------------+
在运行完这四个之后,运行
SELECT COUNT(*) FROM POST WHERE PAGETEXT LIKE \'%?v=%\';
然后确保是否还有其他需要处理的内容。
始终先测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。