Извлечь подстроку с определенным рисунком - PullRequest
0 голосов
/ 14 февраля 2019

Я хотел извлечь определенные значения из базы данных, чтобы загрузить файлы на новый сервер.Я мог бы скопировать и вставить со старого сервера на новый, но я не хотел, чтобы старые файлы там больше не использовались.Вот что я пытаюсь сделать.

В этой таблице products_description хранятся HTML-коды.

Вот схема

Пример данных о продукте

Я хотел извлечь следующую подстроку:

/zc156/product_pdf/[manufacturer]/[name].pdf
/zc156/product_img/[manufacturer]/[name].jpg
/zc156/product_img/[manufacturer]/[name].png

Мне удалось получить большинство (если не все PDF-файлы) файлов, используя следующую2 запроса ...

Для первого PDF-файла

SELECT
    SUBSTRING(`products_description`.`products_description`, 
      LOCATE('/zc156/product_pdf/', `products_description`.`products_description`),
      LOCATE('.pdf', `products_description`.`products_description`) - LOCATE('/zc156/product_pdf/', `products_description`.`products_description`) + 4)
AS 'ProductFile' FROM `products_description`
INNER JOIN `products` ON `products`.`products_id` = `products_description`.`products_id`
WHERE CONVERT(`products_description` USING utf8) LIKE '%/zc156/product_pdf/%'
AND `products`.`products_status` = 1

Для остальных PDF-файлов

SELECT
    SUBSTRING(`products_description`.`products_description`, 
      LOCATE('</a>', `products_description`.`products_description`),
      LOCATE('</tr>', `products_description`.`products_description`) - LOCATE('</a>', `products_description`.`products_description`))
AS 'ProductFile' FROM `products_description`
INNER JOIN `products` ON `products`.`products_id` = `products_description`.`products_id`
WHERE CONVERT(`products_description` USING utf8) LIKE '%/zc156/product_pdf/%'
AND `products`.`products_status` = 1

Однако, когда дело доходит до JPG или PNGимена файлов ... Делать подстроку сложнее, поскольку имена файлов изображений охватывают более одной ячейки, и они повторяются по определенному шаблону ... Я попытался выполнить поиск здесь и нашел эту тему.

Извлечь подстроку с помощьюопределенный шаблон в MySql

Итак, я попытался поместить некоторые из моих собственных данных ... но мой результат не тот, который я хотел. Попытка SQL Fiddle

Поэтому мне интересно, есть ли более чистый способ сделать это.Возможно, придется сложить с парой функций substring и / или left.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...