2012-02-06 62 views
13

我有一個包含大量數據的表,其中一個是blob。我有時需要用這個blob來查看使用PHP的數據。從MySQL Blob字段中選擇一部分

我做的:

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

這個返回整個數據,但我並不需要它

所以,如果我的描述是這樣的:

Lorem存有悲坐阿梅德, consectetur adipiscing elit。在一個temper velit。 Integer坐着一個ligula nibh,eu rutrum賭注。 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。 Maecenas vel nunc nibh,ut luctus urna。 Nunc eu lectus a orci iaculis volutpat eget a lorem。 Nunc lobortis porttitor tempor。 Nulla ipsum neque, volutpat in viverra sit amet,pharetra non tortor。在leo pellentesque nunc ultrices euismod。

Nulla ullamcorper scelerisque leo,eu consequat risus fringilla id。 Nulla facilisi。 Cras坐在amet sem diam molestie dignissim。 Duis interdum,sapien quis laoreet bibendum,dui turpis imperdiet magna,id auctor metus velit sollicitudin dolor。 Integer 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...

+0

你忘了逃跑用'\'''的desc'? – 2012-02-06 01:11:36

+0

@BookOfZeus是讓我修復 – 2012-02-06 01:19:02

回答

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代替。

+0

謝謝這就是我需要 – 2012-02-06 01:27:04

+0

不客氣。 – 2012-02-06 01:29:56

0

類似下面應該做你需要的東西:

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