我需要替换数据库列中的一些文本。
示例:将[youtube]zWg85ALiCUY[/youtube]
替换为//youtube.com/watch?v=zWg85ALiCUY
我该如何正确地做到这一点?
我尝试过转储数据库并运行以下命令。
sed -i -E "s/\[youtube\](.+)\[\/youtube]/https:\/\/www\.youtube\.com\/watch\?v=\1/" dump.sql
它没有正确替换所有实例。 还有其他更好的办法?我对regExp并不是特别擅长。
更新 有些帖子中有多个[youtube] BBCode。
[youtube]zWg85ALiCUY[/youtube] some text... [youtube]huawda5hy[/youtube]
每个都需要更新。
答案 0 :(得分:2)
您可以在纯MySQL代码中执行此操作,而无需使用REGEX。
<强>查询强>
SELECT
REPLACE(REPLACE(col, '[youtube]', '//youtube.com/watch?v='), '[/youtube]', '')
FROM (
SELECT '[youtube]zWg85ALiCUY[/youtube]' AS `col`
)
records
<强>结果强>
REPLACE(REPLACE(col, '[youtube]', '//youtube.com/watch?v='), '[/youtube]', '')
--------------------------------------------------------------------------------
//youtube.com/watch?v=zWg85ALiCUY
答案 1 :(得分:0)
对数据库运行以下命令:
update table set column_name = replace(column_name, '[youtube]zWg85ALiCUY[/youtube]', '//youtube.com/watch?v=zWg85ALiCUY')