gpt4 book ai didi

mysql - 使用查询更新 mysql 数据库文本

转载 作者:搜寻专家 更新时间:2023-10-30 23:27:30 27 4
gpt4 key购买 nike

我们目前拥有一个多年来存储了超过 100,000 条数据记录的数据库,但其结构已不再有效。

表中有一个字段叫youtube_video

它一直像这样存储所有嵌入的 YouTube 视频:

http://www.youtube.com/embed/3mHuu5NklOs?rel=0
http://www.youtube.com/embed/3mHuu5NklOs

我们需要将其更改为:

https://www.youtube.com/watch?v=3mHuu5NklOs

有没有一种方法可以编写一个查询来通过单个查询进行此更改?

最佳答案

您可以使用 REGEXP_REPLACE :

SELECT REGEXP_REPLACE(
youtube_video,
'^http://www.youtube.com/embed/([^?]+).*',
'https://www.youtube.com/watch?v=\1'
) FROM mytable

正则表达式分解:

  • ^ : 字符串的开始
  • http://www.youtube.com/embed/ : 常量字符串部分
  • ([^?]+) :除了问号外,尽可能多的连续字符;周围的括号捕获字符串的那部分,并使其在 REGEXP_REPLACE()
  • 的第二个参数中作为 \1 可用
  • .* :任何内容(直到字符串结尾)

这个 demo on DB Fiddle 返回:

| youtube_video                                  | new_youtube_video                           || ---------------------------------------------- | ------------------------------------------- || http://www.youtube.com/embed/3mHuu5NklOs?rel=0 | https://www.youtube.com/watch?v=3mHuu5NklOs || http://www.youtube.com/embed/3mHuu5NklOs       | https://www.youtube.com/watch?v=3mHuu5NklOs |

If needed, you can easily turn this into an UPDATE :

UPDATE mytable
SET youtube_video = REGEXP_REPLACE(
youtube_video,
'^http://www.youtube.com/embed/([^?]+).*',
'https://www.youtube.com/watch?v=\1'
);

关于mysql - 使用查询更新 mysql 数据库文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54656130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com