从MySQL Blob字段中选择一个部分

Gil*_*kaz 14 php mysql sql

我有一个包含大量数据的表,其中一个是blob.我有时需要使用PHP查看这个blob的数据.

我做:

select `desc` from table where `desc` like '%Nam rhoncus%';
Run Code Online (Sandbox Code Playgroud)

这会返回整个数据,但我不需要它

所以如果我的描述是这样的:

Lorem ipsum dolor坐下来,精致的adipistur elit.在一个tempor velit.整数坐在nibh nibh,eu rutrum ante.Mauris cursus,neque eu ultrices pulvinar,purus purus fermentum libero,in eleifend tortor orci quis lectus.Cras luctus nunc ac tortor laoreet eu iaculis libero consectetur.Maecenas iaculis facilisis libero sodales auctor.Donec gravida interdum vehicula.Suspendisse vitae massa eget arcu condimentum mattis.Fusce ut ligula ante,nec placerat felis.Maecenas vel nunc nibh,ut luctus urna.Nunc eu lectus a orci iaculis volutpat eget a lorem.Nunc lobortis porttitor tempor.Nulla ipsum neque,viverra在viverra坐amet,pharetra non tortor.Leo pellentesque nunc ultrices euismod的Phasellus.

Nulla ullamcorper scelerisque leo,eu consequat risus fringilla id.Nulla facilisi.Cras坐在一个直径的molestie dignissim.Duis interdum,sapien quis laoreet bibendum,dui turpis imperdiet magna,id auctor metus velit sollicitudin dolor.整数blandit,turpis eget interdum commodo,ante nisl laoreet dui,ac congue purus dui quis nisl.在egestas的Etiam blandit eleifend tortor.Vestibulum euismod orci ac nibh consectetur feugiat.Praesent 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坐在amet luctus et,auctor id turpis.Praesent consequat velit ut arcu convallis sodales.Proin pulvinar varius erat,id consequat orci varius sed.

我正在寻找:Nam rhoncus我希望第一次出现如下:

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

Boo*_*eus 15

这个查询:

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

(我把它分解成这样,因此更容易阅读)

这将输出:

...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
Run Code Online (Sandbox Code Playgroud)

注意:我要小心使用mysql反向词,这就是我使用的原因description.