select truncated value from text field

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:01:25 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

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