Mysql
替換字元串的特定部分
我在數據庫中有很多字元串,例如:
<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')
它需要是一個通用的解決方案,如果字元串中存在,則可以替換
&
之前和之前"
的字元串。我無法得到正確的結果。
如果字元串都相同,並且在名為then
c1
的表中呼叫了該列,則可能會讓您到達那裡。在您使用 驗證之前不要更新您的表格。t1``SUBSTRING_INDEX()``SELECT
為了清楚起見,添加了空格。
SELECT CONCAT( SUBSTRING_INDEX(c1,'&',1), '"', SUBSTRING_INDEX(c1,'"',-3) ) FROM t1;
選擇從左邊算起的第一個 ‘&’ 左邊的子字元串,一個文字 “,然後是從右邊算起的第三個 " 的子字元串。
唯一需要注意的是,您顯示的連結格式似乎是錯誤的。第一個“&”似乎應該是“?” 相反,你應該把它剪在“?” 它標記了 URL 中查詢字元串的開始。也許 youtube 正在使用 URL 做一些非標準的事情來解決外掛或瀏覽器問題。
一種方法可能是:
使用兩個條件執行查詢:
- 從要替換為空白字元的字元串中取出子字元串。例子:
SELECT RIGHT(StringColumn,LOCATE('&',StringColumn))
這將返回 ‘&’ 右側的字元。 2. 將此與
REPLACE
函式合併。例子:UPDATE MyTable SET StringColumn = REPLACE (StringColumn, ( SELECT RIGHT(StringColumn,LOCATE('&',StringColumn))) , '')