Mysql
使用 LOCATE() 函式作為 SUBSTRING() 參數給出隨機結果。從文本中提取字元串
我有幾行內容很多,我正在嘗試找到一些程式碼並提取它。它看起來像這樣:
Some code... <div> </div> <div>[flv:http://submarino-libre.s3.amazonaws.com/opciones/basico/webready/Video1CursoOpcionesbasicoWebReady.mp4 http://www.submarinobursatil.com/imagenes/portadas/curso-de-opciones.png 600 369]</div> <div align="left">Duración: 09:56</div> Some other code...
發現我需要找到
[flv:
並提取所有以結尾的行(2個連結)]
所以我提出了這個查詢:
SELECT SUBSTRING(`post_content`, LOCATE('[flv:',`post_content`), LOCATE(']',`post_content`)) AS amazonlinks FROM posts
第一個 LOCATE 函式工作正常,它發現
[flv:
但第二個 LOCATE 函式不會停止查詢提取]
。它從下一行獲得更多程式碼。它僅在我設置一個數字時才有效,但我無法知道確切的長度數字。是否可以使用 2 LOCATE 函式作為 SUBSTRING 的參數?或者我做錯了什麼?
更新:添加 DBFiddle: https ://www.db-fiddle.com/f/m62LBUStp1UbRCk2eVNRrY/0
Substrings 第一個參數是偏移量,第二個參數是從偏移量開始的字元數。您需要從第二個參數中減去偏移量:
SELECT title , SUBSTRING(`content` -- offset in string ,LOCATE('[flv:',`content`) -- number of characters from offset ,LOCATE(']',`content`) - LOCATE('[flv:',`content`) + 1 ) FROM amazonlinks
我添加了 +1 以在結果中包含“]”