Điều này có thể được cải thiện nhưng với tôi, có vẻ như bạn đang tìm kiếm thứ gì đó tương tự như thế này
select *,
case
when locate('search_test',field) < 10 then substring(field,1,char_length('search_test')+10)
else substring(field from locate('search_test',field) - 10 for char_length('search_test') + 20)
end as content
from table
where field like '%search_test%'