一尘不染

从MySQL Blob字段中选择一部分

sql

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

我愿意:

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

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

因此,如果我的描述是这样的:

Lorem ipsum
dolor坐下,一直保持良好状态。在漫长的比赛中。天竺葵整个胡萝卜,足球化妆之前。在日本,跑步,篮球或橄榄球排球,辣椒等无温暖的人均已从临床温度中毕业。明天的哀悼温度现在已经提高了。Maecenas针对抗氧化剂的作者是免费的。津巴布韦有时车辆。悬液可得到天然的牛tis。Fusce
ut ligula lacus,未发现胎盘。Maecenas
nibh现在是那个哀悼锅。从有针对性的临床周末足球毕业后,现在需要一个lorem。现在纸箱摆渡时间。没有放弃他自己,也没有放弃位于维特拉的市区,phartra
tortor。现在在孩子篮球的表现小船。

没有ullamcorper保暖狮子,足球摄影是生态的微笑。娜拉 明天胡萝卜沙拉是电视资产的平台。Duis interdum,ipsum
dolor坐杯饮料,dui turpis imperdiet magna,auctor metus velit sollicitudin
dolor。Cras interdum,turpis eget interdum commodo,ante nisl laoreet dui,dui
quis nisl和Loan Modification。科学家需要可扣除的温度。Vestibulum euismod orci ac nibh
consectetur feugiat。尽可能免费呈现。Morbi elit nulla,gravida ac blandit eu,bibendum
vitae lacus。营养很简单的作者。对于酱汁,辣椒需要生态笔记本,毛里斯酵母菌发酵成区域弧或氧气。Suspendisse eros
amet坐着,tincidunt坐amet luctus等,那是可耻的作者。户外摄影是山谷弧形的一环。

我正在寻找:Nam rhoncus我想像这样第一次出现:

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


阅读 159

收藏
2021-03-17

共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改用它。

2021-03-17