Data type varchar oder text, Werte abgekürzt darstellen

Ich habe auf einer Spalte den Datentyp varchar definiert. Einige der Einträge sind lang, mehr als 179 Zeichen. Dadurch zieht es diese Spalte extrem in die Breite und die Tabelle lässt sich nur unschön (mit Zeilenumbrüchen) auf dem Bildschirm anzeigen.

Gibt es eine Möglichkeit, z.B. nur die ersten 25 oder 30 Zeichen der Werte in der Spalte anzeigen zu lassen?

Habe nach z.B. nach “truncate” gegoogelt für postgres…bisher habe ich noch nichts gescheites gefunden…

edb=*# select substring('sehr langer text',1,5);
 substring 
-----------
 sehr 
(1 row)

edb=*#

mein problem ist grundsätzlich dann, wenn ich einfach SELECT * FROM tabelle; mache und dann eine Spalte viel zu breit ist. Nicht wenn ich eine Abfrage mache.

Gibt es nicht vielleicht einen Parameter, den man beim Datentyp varchar angeben kann, damit er nur z.B. 25 Zeichen anzeigt?

SELECT * IST eine Abfrage. Wenn Du von psql redest, \x ist bekannt?

Ja expanded display habe ich auch schon mal benutzt. Ist guter Vorschlag, danke. Aber in meinem Fall möchte ich lieber die normale Tabellenansicht.

Ich verstehe dein Beispiel, aber auf mein Problem bezogen sehe ich nicht, was es mir bringen würde.

Ich möchte einfach die ganze Tabelle anzeigen SELECT * FROM tabelle, aber bei Spalte n soll es mir die Spaltenbreite auf z.B. 25 Zeichen begrenzen

Mit dem von dir vorgeschlagenen Syntax geht das nicht, oder wie hast du das gemeint?

erzeuge Dir halt einen passenden VIEW, basierend auf meinem Beispiel. Dann kannst select * from view machen.

Ok, soweit bin ich noch nicht in meinem Lernprozess. Dann muss ich das halt für den Moment pendent halten, meine Frage…danke

edb=*# create table datamower(id int generated always as identity, big_text varchar);
CREATE TABLE
edb=*# insert into datamower (big_text ) values ('Das soll jetzt mal eine Demo sein');
INSERT 0 1
edb=*# create view view_datamower as select id, substring(big_text, 1,8) from datamower;
CREATE VIEW
edb=*# select * from view_datamower ;
-[ RECORD 1 ]-------
id        | 1
substring | Das soll

edb=*# \x
Expanded display is off.
edb=*# select * from view_datamower ;
 id | substring 
----+-----------
  1 | Das soll
(1 row)

edb=*#

Cool, danke :slight_smile: Das probiere ich dann mal aus…kann ich nachvollziehen dein Beispiel, bis auf “generated always as identity”, das verstehe ich noch nicht ganz. Braucht es das zwingend?

nein, nicht zwingend.

Das bewirkt, daß diese Spalte IMMER automatisch erzeugt wird.

edb=*# insert into datamower (id,big_text ) values (2,'Test');
FEHLER:  kann nicht in Spalte »id« einfügen
DETAIL:  Spalte »id« ist eine Identitätsspalte, die als GENERATED ALWAYS definiert ist.
HINT:  Verwenden Sie OVERRIDING SYSTEM VALUE, um diese Einschränkung außer Kraft zu setzen.
edb=*# 

super, es funktioniert mit der Methode CREATE VIEW :+1: bin nach deinem Beispiel gegangen und das klappt. :raised_hands: danke!

…habe jetzt gerade noch festgestellt, das in pgAdmin die Spaltenbreite nicht automatisch dem breitesten Eintrag angepasst wird, wie das in psql passiert. Interessant.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.