Kiedyś na forum, ktoś napisał tak:
SELECT LEFT( tresc, IF(LENGTH(tresc)<500, LENGTH(tresc), LOCATE(' ', tresc, 500))) AS wpis
FROM news ;
Kod pobiera maxymalnie 500 znaków z pola tresc. Jeżeli w polu znaków jest więcej, przycina długość do pierwszej spacji wystepującej po 500-tnym znaku.
Trzeba uważać z np. LOCATE(co, gdzie, odkad) - jesli LENGTH(gdzie)<odkad dostaniemy pusty string. I właśnie zlokalizowanie tego zajęło mi większość czasu. Jakoś w manualu chyba zapomnieli o tym napisać, albo ja przeoczyłem.
A teraz pokornie czekam na info, że mozna to zrobić prościej )
P.S. Do zapytania nalezaloby dodac
LENGTH(tresc) AS znakow
i następnie w php sprawdzić:
<?php
If($znakow > 500) { $wpis .= '<a href>wiecej</a>' }
?>
(gdzie 500 to ilość znaków, które chcemy wyciągnąć)