Mysql

替換字元串的特定部分

  • October 11, 2016

我在數據庫中有很多字元串,例如:

<iframe src="https://www.youtube.com/embed/-qTiYA1WiY8&index=8&list=PLPNcLSfYNC3Dw535smncyHRCBRmdf1Bti"
   frameborder="0" allowfullscreen></iframe>

原版的

www.youtube.com/embed/-qTiYA1WiY8&index=8&list=PLPNcLSfYNC3Dw535smncyHRCBRmdf1Bti

期望的

www.youtube.com/embed/-qTiYA1WiY8

所以最終的字元串可以轉換為:

<iframe src="https://www.youtube.com/embed/-qTiYA1WiY8"
   frameborder="0" allowfullscreen></iframe>

我可以使用 PHP 做到這一點,但我想用 MySQL 查詢來做到這一點。我嘗試使用:

UPDATE MyTable    
   SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')

它需要是一個通用的解決方案,如果字元串中存在,則可以替換&之前和之前"的字元串。我無法得到正確的結果。

如果字元串都相同,並且在名為thenc1的表中呼叫了該列,則可能會讓您到達那裡。在您使用 驗證之前不要更新您的表格。t1``SUBSTRING_INDEX()``SELECT

為了清楚起見,添加了空格。

SELECT CONCAT(
 SUBSTRING_INDEX(c1,'&',1),
 '"',
 SUBSTRING_INDEX(c1,'"',-3)
) FROM t1;

選擇從左邊算起的第一個 ‘&’ 左邊的子字元串,一個文字 “,然後是從右邊算起的第三個 " 的子字元串。

唯一需要注意的是,您顯示的連結格式似乎是錯誤的。第一個“&”似乎應該是“?” 相反,你應該把它剪在“?” 它標記了 URL 中查詢字元串的開始。也許 youtube 正在使用 URL 做一些非標準的事情來解決外掛或瀏覽器問題。

一種方法可能是:

使用兩個條件執行查詢:

  1. 從要替換為空白字元的字元串中取出子字元串。例子:
SELECT RIGHT(StringColumn,LOCATE('&',StringColumn))

這將返回 ‘&’ 右側的字元。 2. 將此與REPLACE函式合併。例子:

UPDATE MyTable 
SET StringColumn = REPLACE (StringColumn, (
   SELECT RIGHT(StringColumn,LOCATE('&',StringColumn))) , '')

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