2012-02-06 32 views
13

Tôi có một bảng chứa nhiều dữ liệu và một trong số đó là một đốm màu. Tôi một số lần cần phải nhìn vào blob này cho dữ liệu bằng cách sử dụng PHP.Chọn một phần từ Trường Blob của MySQL

tôi làm:

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

này trả lại toàn bộ dữ liệu nhưng tôi không cần nó

Vì vậy, nếu mô tả của tôi là như thế này:

Lorem ipsum dolor sit Amet, consitetur adipiscing elit. Trong một thời tiết velit. Integer ngồi amet ligula nibh, eu rutrum ante. Mauris cursus, neque eu ultrices pulvinar, purus purus fermentum libero, trong 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 thảm tràng. Fusce ut ligula ante, nec placerat felis. Maecenas vel nunc nibh, ut luctus urna. Nunc eu lectus a orci iaculis volutpat eget một lorem. Nunc lobortis porttitor temportitor. Nulla ipsum neque, volutpat trong viverra ngồi amet, pharetra không bị tra tấn. Phasellus tại leo pellentesque nunc ultrices euismod.

Nulla ullamcorper scelerisque leo, eu resultat risus fringilla id. Nulla facilisi. Cras ngồi amet sem một diam molestie dignissim. Duis interdum, sapien quis laoreet bibendum, dui turpis imperdiet magna, id auctor metus velit sollicitudin dolor. Số blandit nguyên bản, số lượng lớn, số tiền là hàng hoá liên tục, ví dụ như mã hóa, ac congue purus dui quis nisl. Etiam blandit eleifend tortor tại egestas. Vestibulum euismod orci ac nibh consectetur feugiat. Praesent ac libero quam. Morbi elit nulla, gravida ac blandit eu, bibendum vitae lacus. Trong facilisis chất dẫn điện đẳng cấp ipsum aliquam. Nam rhoncus, purus eget fringilla ullamcorper, mauris tellus fermentum lectus, ut temusus tellus arcu vel màu. Suspendisse eros augue, tincidunt ngồi amet luctus et, auctor id turpis. Kết quả tuyệt vời làm tăng tốc độ sodales ut arcu convallis. Proin pulvinar varius erat, id kết quả orci varius sed.

Một Tôi đang tìm kiếm: Nam rhoncus Tôi muốn nhận được sự xuất hiện đầu tiên như:

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

+0

bạn đã quên để thoát khỏi 'cái desc' với '\' '? –

+0

@BookOfZeus có để tôi sửa chữa –

Trả lời

15

truy vấn này:

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

(Tôi đã phá vỡ nó xuống như thế này vì vậy nó dễ đọc hơn)

điều này sẽ xuất:

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

Vì vậy, trong chương trình PHP bạn có thể làm:

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

LƯU Ý: Ill cẩn thận sử dụng mysql đảo ngược lời, đây là lý do tại sao tôi sử dụng description để thay thế.

+0

cảm ơn đây là những gì tôi cần –

+0

bạn được chào đón. –

0

giống như sau nên làm những gì bạn cần:

SELECT 
    SUBSTR(description, INSTR(description, 'Nam rhoncus'), LENGTH('Nam rhoncus')) matchStr 
FROM 
    testTable 
WHERE 
    description like '%Nam rhoncus%' 
; 
Các vấn đề liên quan