2012-02-06 27 views
13

Tengo una tabla que contiene una gran cantidad de datos y una de ellas es una burbuja. Algunas veces necesito buscar en este bloque de datos usando PHP.Seleccione una parte de un campo de MySQL Blob

que hago:

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

este regreso todos los datos pero no es necesario que

Así que si mi descripción es la siguiente:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. En un temporizador velit. Integer sit amet ligula nibh, eu rutrum ante. Mauris cursus, ñeque eu ultrices pulvinar, Purus Purus fermentum libero, en 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. Mecenas vel nunc nibh, ut luctus urna. Nunc eu lectus a orci iaculis volutpat eget a lorem. Nunc lobortis porttitor tempor. Nulla ipsum ñeque, volutpat en viverra sit amet, pharetra no tortor. Phasellus en leo pellentesque nunc ultrices euismod.

Nulla Ullamcorper leo scelerisque, eu consequat RISUS fringilla ID. Nulla facilisi. Cras sentarse a la mitad a diam molestie dignissim. DUIs interdum, sapien quis laoreet bibendum, dúos turpis imperdiet magna, Identificación del auctor metus velita sollicitudin dolor. blandit número entero, turpis eget interdum commodo, ante nisl laoreet dúos, dúos ac congue purus quis nisl. Etiam blandit eleifend tortor en egestas. Vestibulum euismod orci ac nibh consectetur feugiat. Praesent ac libero quam. Morbi elit nulla, gravida ac blandit eu, bibendum vitae lacus. En la instalación 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. Praesent consequat velit ut arcu convallis sodales. Proin pulvinar varius erat, id consequat orci varius sed.

Un Busco: Nam rhoncus Quiero conseguir la primera aparición como:

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

+0

¿Ha olvidado para escapar del 'desc' con' \ ''? –

+0

@BookOfZeus sí, déjame arreglar –

Respuesta

15

Esta consulta:

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

(I partió hacia abajo como esto por lo que es más fácil de leer)

esto dará salida:

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

Así que en su PHP que puede hacer:

<?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: enfermedad sea cuidadosa usando MySQL invierte palabras, es por eso que uso description lugar.

+0

gracias esto es lo que necesito –

+0

de nada. –

0

algo como lo siguiente debe hacer lo que necesita:

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