首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MYSQL中使用REGEXP替换子字符串

在MYSQL中使用REGEXP替换子字符串
EN

Stack Overflow用户
提问于 2011-06-19 00:17:45
回答 1查看 3.3K关注 0票数 1

在我的论坛上,我有一个显示youtube视频的BB代码。以下选项可用于提取youtube视频代码,并使用此代码构建嵌入代码:

代码语言:javascript
复制
[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开头、以包含?v=的/youtube结尾的子字符串替换为

代码语言:javascript
复制
[youtube]11 characters from ?v=[/youtube]

我正在使用MySQL表名是包含这些BB代码的帖子字段名是PAGETEXT

你能帮我建立这个更新吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-23 08:49:06

编辑:之前的答案是完全错误的。

不使用正则表达式:

代码语言:javascript
复制
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]');
UPDATE POST SET PAGETEXT = REPLACE(PAGETEXT, '[youtube]youtube.com/watch?v=', '[youtube]');
UPDATE POST SET PAGETEXT = REPLACE(PAGETEXT, '&feature=related[/youtube]', '[/youtube]');

这将通过直接搜索和替换来删除您不需要的数据。有没有其他的模式/格式没有在原始帖子中列出?

使用测试数据:

代码语言:javascript
复制
SET @test = 'test [youtube]youtube.com/watch?v=_OBlgSz8sSM&feature=related[/youtube] test';
SET @test = REPLACE(@test, '[youtube]http://www.youtube.com/watch?v=', '[youtube]');
SET @test = REPLACE(@test, '[youtube]www.youtube.com/watch?v=', '[youtube]');
SET @test = REPLACE(@test, '[youtube]youtube.com/watch?v=', '[youtube]');
SET @test = REPLACE(@test, '&feature=related[/youtube]', '[/youtube]');
SELECT @test;

mysql> SELECT @test;
+------------------------------------------+
| @test                                    |
+------------------------------------------+
| test [youtube]_OBlgSz8sSM[/youtube] test | 
+------------------------------------------+

在运行完这四个之后,运行一个

代码语言:javascript
复制
SELECT COUNT(*) FROM POST WHERE PAGETEXT LIKE '%?v=%';

然后确保是否有任何其他需要处理的东西。

总是先测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6397285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档