select truncated value from text field
am 06.12.2007 15:52:12 von arkascha
Hallo zusammen,
was ist für dies hier die sinnvolle Praxis:
Ein SELECT auf eine Text-Spalte einer Tabelle, wobei dann, wenn der Inhalt
länger als n Zeichen ist der Inhalt abgeschnitten und der weggeschnittene
Rest durch ein "[...]" ersetzt (angedeutet) werden soll.
Beispiel:
SELECT cha_jou_id, cha_jou_obj_id, cha_jou_date, cha_jou_user,
cha_jou_category, cha_jou_title,
IF((250
AS cha_jou_content FROM charges_journal WHERE cha_jou_obj_id='%d'
Bislang kann ich mir nur mit dem chaotischen IF-Statement behelfen, das ist
aber natürlich nicht gerade effizient. Daher die Frage:
Gibt es dafür eine effizientere Möglichkeit ?
Danke !
--
arkascha
Re: select truncated value from text field
am 06.12.2007 16:34:45 von arkascha
Andreas Kretschmer wrote:
> begin arkascha schrieb:
>> Hallo zusammen,
>> was ist für dies hier die sinnvolle Praxis:
>>
>> Ein SELECT auf eine Text-Spalte einer Tabelle, wobei dann, wenn der
>> Inhalt länger als n Zeichen ist der Inhalt abgeschnitten und der
>> weggeschnittene Rest durch ein "[...]" ersetzt (angedeutet) werden soll.
>
> test=# create table foo (id int,t text);
> CREATE TABLE
> test=*# insert into foo values (1,'123');
> INSERT 0 1
> test=*# insert into foo values (2,'1234567890');
> INSERT 0 1
> test=*# select id, substr(t,1,3) || case when length(t) > 3 then '...'
> else '' end from foo;
> id | ?column?
> ----+----------
> 1 | 123
> 2 | 123...
> (2 rows)
> end
> Andreas
Moin, jau, ist eine Alternative, aberletztlich auch nicht einfacher. Ich
hatte gehofft, es gäbe ein "eingebautes" Feature...
Ein kleines Probleme sehe ich mit Deinem alternativen Ansatz:
wenn der Text eine Länge knapp unter 255 (>250) hat würde er gekürzt werden
(und sogar über 255 Zeichen kommen), obwohl es eigentlich keinen Grund zum
Kürzen gibt. Das verwirrt etwas, weil man ja mehr erwartet aufgrund
des '...'
Aber Danke !
--
arkascha