K@llenMedlem sedan mars 20032 667 inlägg Hej,
Jag har en sql-fråga som ser ut så här:
$sql = "SELECT a.articleId, a.subject, LEFT(a.copy, 180) AS copy, a.pubDate, u.userId
FROM Article a
INNER JOIN User u
ON a.authorId = u.userId
ORDER BY " . $order . " DESC
LIMIT 5";
Nu hugger den som väntat texten exakt efter 180 tecken. Detta blir ganska fult. Kan jag i MySQL men någon strängfunktion välja efter antal ord från vänster? Eller på annat smart sätt slippa avhuggna ord.
Detta är kanske något jag får fixa i PHP, men dumt att hämta hela texten om jag bara ska använda ca 180 tecken.
mvh jörgen
cyprysMedlem sedan dec. 20003 563 inlägg Kan du inte bara hämta drygt 180 tecken och sen hugga av texten vid sista mellanrummet i strängen?
LarsGMedlem sedan dec. 200012 464 inlägg select substring(str from 1 for
case when position(' ' in str) = 0 then 180
else 180 - position(' ' in reverse(str)) end)
from t
K@llenMedlem sedan mars 20032 667 inlägg Hej igen,
Tack för era svar. Jag får dock inte det att fungera riktigt. Första biten i texten:
Sveriges Television och Sveriges Radio har båda beslutat att börja sända digitala sändningar istället för analogt. Jag anser att det är ett hot mot säkerheten och integriteten.
SQL-fråga som den ser ut nu:
$sql = "SELECT substring(a.copy from 1 for
case when position(' ' in a.copy) = 0 then 180
else 180 - position(' ' in reverse(a.copy)) end) AS copy
FROM Article a
INNER JOIN User u
ON a.authorId = u.userId
ORDER BY " . $order . " DESC
LIMIT 5";
Resultat:
Sveriges Television och Sveriges Radio har båda beslutat att börja sända digitala sändningar istället för analogt. Jag anser att det är ett hot mot säkerheten och i
LarsGMedlem sedan dec. 200012 464 inlägg $sql = "SELECT substring(a.copy from 1 for
case when char_length(a.copy) <= 180 then char_length(a.copy)
when position(' ' in a.copy) = 0 then 180
else 180 - position(' ' in reverse(a.copy)) end) AS copy
FROM Article a
INNER JOIN User u
ON a.authorId = u.userId
ORDER BY " . $order . " DESC
LIMIT 5";
K@llenMedlem sedan mars 20032 667 inlägg Tack LarsG, men det blir tyvärr exakt samma resultat. :(
LarsGMedlem sedan dec. 200012 464 inlägg SELECT substring(a.copy from 1 for
case when char_length(a.copy) <= 180 then char_length(a.copy)
when position(' ' in a.copy) = 0 then 180
else 180 - position(' ' in reverse(substring(a.copy from 1 for 180))) end) AS copy
FROM artikel as a;
K@llenMedlem sedan mars 20032 667 inlägg Vad skulle man göra utan ett geni som LarsG? ;)
Tusen tack, hoppas jag kan få tillfälle att hjälpa dig någon gång. :bire