2016-03-17 68 views
0

我有一個表「內容」列存儲論壇帖子,有一個或多個網址在「內容」字段的一個記錄中,我想獲得所有的url在「內容」一欄,一行一個網址,我用下面的代碼從mysql表中的一列中選擇多個網址

select substr(`content`, locate(`content`,"http://")) 

它一個URL出現在一個記錄工作,得到URL列表像

如果記錄中存在多個網址,它只會獲得第一個網址。

如何解決呢?

+0

如果數據被規格化,因此值是相互獨立存儲肯定會更容易些...... – David

+0

這可以幫助:HTTP://計算器.com/questions/17942508/sql-split-values-to-multiple-rows,但是要走的路是像上面的@David所說的 - 首先規範化數據。 – ptrk

+0

這是正常的一些職位有不止一個網址,就像回覆一些新手的問題,有些用戶會回覆一些鏈接,所以有一個職位有2或3個鏈接。 – eagle

回答

0

另一種方式來看待它是嘗試:

SELECT GROUP_CONCAT(substr(`content`, locate(`content`,"http://"))) FROM your_table; 

這將串連所有URL到一個字符串,並從那裏進行 - 也許你可以在它的代碼分裂,而不是要求DB來做到這一點。否則,你可以破解使用整數的輔助表1-N:SQL split comma separated row