2016-03-17 71 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