2012-02-06 15 views
13

Ho una tabella che contiene un sacco di dati e uno di loro è un blob. A volte devo esaminare questo blob per i dati usando PHP.Selezionare una parte da un campo MySQL Blob

faccio:

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

questo ritorno tutti i dati, ma non ho bisogno che

Quindi, se la mia descrizione è come questo:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In un tempo velit. Integer sit amet ligula nibh, eu rutrum ante. Mauris cursus, neque eu ultrices pulvinar, Purus Purus fermentum libero, in eleifend tortor orci quis lectus. Cras luctus nunc ac tortore laoreet eu iaculis libero consectetur. Mecenate iaculis facilisis libero sodales auctor. Donec gravida interdum vehicula. Suspendisse vitae massa eget arcu mattis condimento. Fusce ut ligula ante, nec placerat felis. Mecenate 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. Phasellus at leo pellentesque nunc ultrices euismod.

Nulla ullamcorper scelerisque leo, eu risus consequat fringilla id. Nulla facilisi. Cras sit amet sem a diam molestie dignissim. Duis interdum, Sapien quis laoreet bibendum, dui turpis imperdiet magna, id auctor metus velit sollicitudin dolor. blandit intero, turpis Eget interdum commodo, ante nisl laoreet dui, ac congue Purus dui quis nisl. Etiam blandit eleifend tortor at egestas. Vestibulum euismod orci ac nibh consectetur feugiat. Praesent ac libero quam. Morbi elit nulla, gravida ac blandit eu, bibendum vitae lacus. In 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. Pregevole conseguenza, velit ut arcu convallis sodales. Proin pulvinar varius erat, id consequat orci varius sed.

Un Cerco: Nam rhoncus Voglio ottenere la prima occorrenza come:

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

+0

Hai dimenticato di sfuggire al 'desc' con' \ ''? –

+0

@BookOfZeus sì fammi correggere –

risposta

15

seguente interrogazione:

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

(ho rotto giù come questo in modo che sia più facile da leggere)

questo produrrà:

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

Quindi nel tuo PHP si può fare:

<?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 

NOTA: Ill fare attenzione usando mysql invertito parole, questo è il motivo per cui io uso description invece.

+0

grazie questo è quello che mi serve –

+0

sei il benvenuto. –

0

qualcosa come il seguente dovrebbe fare quello che ti serve:

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