Mysql

在MYSQL中替換部分字元串,當只知道子字元串的起始字元,結束字元和中間的唯一字元串時?

  • January 27, 2020

我試圖找到一種方法來替換數據庫中的字元串的一部分,而不知道確切的子字元串內容,而不知道它如何開始、結束並在其間有一個特定的 ID 字元串。

要指定,我有 Vimeo iframe,它們位於 MySQL 數據庫表的列內的文章內容中。我需要將此列中的所有 vimeo iframe 字元串替換為另一個影片平台腳本。我有一個要使用的列表,其中包含 Vimeo ID 和新程式碼來代替現有的 Vimeo iframe,因此這為我提供了一個在搜尋時使用的唯一標識符。

問題是,一些 Vimeo url 在 URL 中添加了額外的 GET 查詢,因此我無法對 Vimeo iframe 進行 1 對 1 匹配。

我確實知道我需要替換的每個 iframe 實例都將以 開頭<iframe、結尾</iframe>並包含一個特定的 Vimeo ID(即1234567)。有沒有辦法使用 Regex 和 concat 或類似的東西來做到這一點,以便我可以用新字元串替換整個 iframe 程式碼?

測試:

UPDATE source_table
SET field = CONCAT( SUBSTRING_INDEX(field, @start, 1),
                   @replacement,
                   SUBSTRING_INDEX(field, @end, -1)
                 )
WHERE LOCATE(@middle, SUBSTRING_INDEX(SUBSTRING_INDEX(field, @start, -1), @end, 1))

引用自:https://dba.stackexchange.com/questions/258295