Подтвердить что ты не робот

Выберите часть из поля MySQL Blob

У меня есть таблица, содержащая множество данных, и одна из них - это blob. Я несколько раз должен изучить этот blob для данных, используя PHP.

Я делаю:

select `desc` from table where `desc` like '%Nam rhoncus%';

это возвращает все данные, но мне это не нужно

Итак, если мое описание выглядит так:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Во время велит. Integer sit amet ligula nibh, eu rutrum ante. Mauris cursus, neque eu ultrices pulvinar, purus purus fermentum libero, в eleifend толерант orci quis lectus. Cras luctus nunc ac tortor laoreet eu iaculis либеро consectetur. Maecenas iaculis facilisis libero sodales auctor. Donec gravida interdum vehicleula. Супружеская энциклопедия condimentum mattis. Fusce ut ligula ante, nec placerat felis. меценат vel nunc nibh, ut luctus urna. Nunc eu lectus a orci iaculis volutpat eget lorem. Nunc lobortis porttitor time. Nulla ipsum neque, volutpat in viverra sit amet, pharetra non tortor. Фазелл у Лев pellentesque nunc ultrices euismod.

Nulla ullamcorper scelerisque leo, eu followat risus fringilla id. Nulla facili. Крас сидит, сидя в диам. DUIs interdum, sapien quis laoreet bibendum, dui turpis imperdiet magna, id auctor metus velit sollicitudin dolor. Integer blandit, turpis eget interdum commo, ante nisl laoreet dui, ac congue purus dui quis nisl. Etiam blandit черепаха черепах в egestas. Vestibulum euismod orci ac nibh consectetur feugiat. Преданный ac libero quam. Morbi elit nulla, gravida ac blandit eu, bibendum vitae lacus. В Facilisis pellentesque ipsum aliquam auctor. Nam rhoncus, purus eget fringilla ullamcorper, mauris tellus fermentum lectus, ut tempus tellus arcu vel Dolor. Suspendisse eros augue, tincidunt sit amet luctus et, auctor id turpis. Предательство, связанное со всеми связями. Proin pulvinar varius erat, id следовательно, orci varius sed.

Я ищу: Nam rhoncus Я хочу получить первое появление, например:

...m auctor. Nam rhoncus, purus eg...

4b9b3361

Ответ 1

Этот запрос:

SELECT 
  CONCAT(
    '...', 
    SUBSTR(`description`, 
      LOCATE('Nam rhoncus', `description`) - 10, 
      (LENGTH('Nam rhoncus') + 20)), 
    '...') AS `description`
FROM table 
WHERE `description` LIKE '%Nam rhoncus%';

(я сломал это так, чтобы было легче читать)

это выведет:

...m auctor. Nam rhoncus, purus eg...

Итак, на вашем PHP вы можете сделать:

<?php
define('CHAR_LEFT', 10);
define('CHAR_RIGHT', 10);
// db stuff
$search = mysql_real_escape_string($search_var);
$query = "SELECT CONCAT('...', SUBSTR(`description`, LOCATE('" . $search . "', `description`) - " . CHAR_LEFT . ", (LENGTH('" . $search . "') + " . (CHAR_LEFT + CHAR_RIGHT) . ")), '...') AS `description` FROM table WHERE `description` LIKE '%" . $search . "%';";
// then your request

ПРИМЕЧАНИЕ. Будьте осторожны, используя обратные слова mysql, поэтому я использую description вместо этого.

Ответ 2

Что-то вроде следующего должно делать то, что вам нужно:

SELECT
    SUBSTR(description, INSTR(description, 'Nam rhoncus'), LENGTH('Nam rhoncus')) matchStr
FROM
    testTable
WHERE
    description like '%Nam rhoncus%'
;