2016-03-17 5 views
0

У меня есть таблица с сообщением о содержимом столбца «content», в одной записи поля «контент» есть один или несколько URL-адресов, я хочу получить весь URL-адрес в поле «content», колонку содержание», один адрес в одной строке, я использую ниже кодвыберите несколько URL-адресов из одного столбца в таблице mysql

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

это работает для одного URL в одной записи, получить список URL, как

он получает только первый URL-адрес, если в записи имеется более одного URL-адреса.

как исправить?

+0

Конечно, было бы проще, если бы данные были нормализованы, чтобы значения сохранялись независимо друг от друга ... – David

+0

Это может помочь: http: // stackoverflow .com/questions/17942508/sql-split-values-to-multiple-rows, но путь, как сказал @David, - сначала нормализовать данные. – ptrk

+0

Это нормально, некоторые сообщения имеют более одного URL-адреса, например, ответ на вопрос некоторых новичков, некоторые пользователи ответят на некоторые ссылки, поэтому в одном сообщении есть 2 или 3 ссылки. – eagle

ответ

0

Другой способ смотреть на него, чтобы попробовать:

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

, который будет объединять все адреса в одну строку и вести оттуда - может быть, вы можете разделить его в коде, а не требовать от БД к сделай это. В противном случае вы можете взломать использование вспомогательной таблицы целых чисел. 1-n: SQL split comma separated row

Смежные вопросы