我有一个包含大量数据的表,其中一个是blob。我有时需要使用PHP来查看这个blob数据。
我做:
select `desc` from table where `desc` like '%Nam rhoncus%';
这会返回整个数据,但我不需要它
所以,如果我的描述是这样的:
Lorem ipsum dolor坐下来,精神上的精神。在一个临时的 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 调味品马蒂尼斯。 Fusce ut ligula ante,nec placerat felis。保护者 vel nunc nibh,ut luctus urna。 Nunc eu lectus a orci iaculis volutpat eget a lorem。 Nunc lobortis porttitor tempor。 Nulla ipsum neque, 在viverra的volutpat坐在amet,pharetra non tortor。在狮子座的Phasellus pellentesque nunc ultrices euismod。
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 悲。 Suspendisse eros augue,tincidunt sit 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...
答案 0 :(得分:15)
此查询:
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
的原因。
答案 1 :(得分:0)
以下内容应该满足您的需求:
SELECT
SUBSTR(description, INSTR(description, 'Nam rhoncus'), LENGTH('Nam rhoncus')) matchStr
FROM
testTable
WHERE
description like '%Nam rhoncus%'
;