Копирование определённой строчки из одного поля в другое SQL

Тема в разделе "Базы данных", создана пользователем RAPCorp, 14 мар 2017.

Модераторы: latteo
  1. RAPCorp

    RAPCorp Постоялец

    Регистр.:
    12 сен 2012
    Сообщения:
    66
    Симпатии:
    5
    Есть какой-нибудь универсальный запрос SQL, чтобы из одного поля таблицы (text) где находится текст с тэгами, брать первое изображение формата

    Код:
    <p><img src="/images/kazualnieigrinapk_8B979AA3.jpg" /></p>
    и копировать его в соседнее поле, мне нужно сделать превьюшки (мини изображения рядом с анонсами статьи или новости), хотелось чтобы у каждой была отдельная картинка. Как-то через UPDATE это сделать можно? В таблице записей около 3к и руками это делать не айс(
     
    Последнее редактирование модератором: 14 мар 2017
  2. primehostnet

    primehostnet

    Регистр.:
    28 июн 2015
    Сообщения:
    160
    Симпатии:
    28
    напишите простенький скрипт на php будет удобней и проще...
    Регулярные выражения в mysql не для натуралов
     
    alex_me и Nei нравится это.
  3. RAPCorp

    RAPCorp Постоялец

    Регистр.:
    12 сен 2012
    Сообщения:
    66
    Симпатии:
    5
    У меня с регулярками фигово, возможно ли их настроить таким образом, чтобы они url резали только в первой найденной ссылки, а не проходил в поисках всё поле?
     
  4. ZiX

    ZiX Коддинг, Парсинг

    Moderator
    Регистр.:
    9 июл 2011
    Сообщения:
    1.382
    Симпатии:
    582
    В sql тоже есть regexp. Вот вам и решение...
     
  5. RAPCorp

    RAPCorp Постоялец

    Регистр.:
    12 сен 2012
    Сообщения:
    66
    Симпатии:
    5
    У меня то с обычными регуляками всегда проблемы, а тут чёрт ногу сломит http://artkiev.com/blog/mysql-regexp-query.htm О_о
     
  6. Black Hat

    Black Hat

    Регистр.:
    15 май 2015
    Сообщения:
    155
    Симпатии:
    101
    Ага, только он не предназначен для выборки подстроки. Мана
    Так что пишем скрипт или мучаемся со SQL substring
     
  7. RAPCorp

    RAPCorp Постоялец

    Регистр.:
    12 сен 2012
    Сообщения:
    66
    Симпатии:
    5
    Как я понял, регулярки SQL заточены скорее на выборку и поиск чего-либо в таблице, но ни как не выдирание каких-то кусков содержимого и добавлении в другое поле.
     
  8. Роман Дмитриев

    Роман Дмитриев Создатель

    Регистр.:
    16 авг 2015
    Сообщения:
    22
    Симпатии:
    3
    В MySQL использовать LOCATE в запросе и с его помощью разбирать HTML.
     
  9. E6yH

    E6yH Создатель

    Регистр.:
    9 окт 2016
    Сообщения:
    13
    Симпатии:
    8
    Конкретно для твоего примера можно так:
    Код:
    SELECT
        c,
        SUBSTRING_INDEX(SUBSTRING(c, LOCATE('src=', c) + 5),
                '"',
               1)
    FROM
        t;
    Результат на пикче для твоих данных
    mysql.jpg
    Вкратце: ищет первое в строчке src=, а затем берёт строку между двумя двойными ковычками "
    Проверил на MySQL 5.7 Если у тебя старая версия, то этого функции SUBSTRING_INDEX может и не быть