У меня есть база данных mysql, где несколько URL-адресов сохраняются в одном поле (см. Ниже). Теперь мне нужно отделить эти URL, чтобы вставить их в новую базу данных, где каждый URL имеет свой собственный ID/Row.Разделительные строки в запросе mysql
К сожалению, я до сих пор не смог отделить первый URL-адрес от других с помощью Substring и не смог получить следующие.
Вот пример такого поля:
www.1234.com
www.435346.com
www.35345567.org
www.9380.net
...etc.
, так что может быть разное количество URL в поле.
я могу получить первый с:
INSERT INTO url (url)
SELECT DISTINCT SUBSTRING_INDEX(old_url_field, 'www', 2)
FROM old_table
Но я не имею ни малейшего представления о том, как получить все остальные.
Спасибо за вашу помощь заранее.
EDIT:
Решение от PaparazzoKid работал с некоторыми изменениями для меня.
я просто должен был сделать некоторые изменения, так как URL, в моем случае, не отделены друг от друга пробелами, но разрывами строк [CHAR (10)], но затем она работала отлично, вы можете найти мое решение здесь
http://sqlfiddle.com/#!2/88b882/2
или кода непосредственно ниже:
CREATE TABLE tablename (
id INT,
name VARCHAR(80));
INSERT INTO tablename VALUES
(1, 'www.mysite.com
www.anothersite.com
www.siteone.com'),
(2, 'www.sitetwo.net');
Мой модифицированный код SQL:
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, CHAR(10), numbers.n), CHAR(10), -1) url
FROM
(SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
UNION ALL SELECT 5 UNION ALL SELECT 6) numbers INNER JOIN tablename
ON CHAR_LENGTH(REPLACE(tablename.name,CHAR(10), ' '))
-CHAR_LENGTH(tablename.name)>=numbers.n-1
ORDER BY
n
Возможно, было бы проще написать небольшой скрипт для него на языке программирования. Вы можете извлечь данные из старой базы данных, обработать их и вставить в новый. – rednaw
Это одноразовое усилие? или вам нужно будет продолжать это делать? – Randy
Итак, вы хотите разделить его на 3 части? Может ли url быть похожим на 'foo.bar.baz.or.whatever.com'? –