mehrere spalten auslesen und zu einer zusammenfassen

Hallo zusammen,

ich habe da ein Problem dessen Lösungsfindung sich schwieriger gestaltet als ich vermutet hätte.

Und zwar habe ich eine Tabelle die vier Abstractfelder enthällt. Diese vier Felder sollen durch eine Volltextsuche recherchierbar sein. Deshalb möchte ich alle vier Felder auslesen und in einer neuen Spalte zusammenfassen, sodass die Volltextsuche praktisch nur über ein Feld läuft.

Bisher habe ich das so versucht:

SELECT     TOP 100 PERCENT dbo.Programm_daten.*, 
Abstract_1 + Abstract_2 + Abstract_3 + Abstract_4 AS gesamt...
 

Das hat zur Folge, dass nur in dem Gesamtfeld eines Tupels Inhalt angezeigt wird, wenn in allen vier Abstractfeldern etwas steht. Sobald nur eins der vier Felder Null ist, dann bleibt auch das Gesamtfeld leer.
Weiß hier jemand eine Lösung? Es ist wirklich wichtig für mich.

Um Dinge zusammenzukitten gibt es den || - Operator, also feld1 || feld2. Und falls die Felder NULL sein können, gibt es COALESCE:

select coalesce(feld1,’’) || coalesce(feld2,’’)

Andreas

Hallo Andreas,

vielen Dank für Deine Antwort.
Ich habe das jetzt einmal so probiert:

SELECT     TOP 100 PERCENT dbo.Programm_daten.*,
COALESCE (Abstract_1, '') || COALESCE (Abstract_2, '') || 
COALESCE (Abstract_3, '') || COALESCE (Abstract_4, '') AS gesamt
FROM         dbo.Programm_daten
WHERE     (ID_Hauptprogramm IS NULL) AND (Monitoring = 1)
ORDER BY REGS, Programmname

Da kommt aber diese Fehlermeldung:

Fehler in SELECT-Klausel: Ausdruck in der Nähe von '|'.
From-Klausel fehlt.
Analysieren von Abfragetext nicht möglich.
 

Was mache ich denn hier noch falsch?

Was bezweckt ‘SELECT TOP 100 PERCENT dbo…’?

Andreas

Hm, das klingt mir sehr nach Microsoft SQL Server… SELECT TOP 100 liefert die ersten 100 Treffer. Sowie ein LIMIT bei PostgreSQL.

cu tb.

Und ein “SELECT TOP 100 PERCENT” die ersten 100 Prozent? Nun, bei M$ kann ich mir jeden Schwachfug vorstellen…

Andreas

Hallo,

ok, TOP 100 PERCENT ist ein Überbleibsel, welches ich vergessen habe herauszunehmen. In diesem Fall spielt es aber keine Rolle, denn die selbe Fehlermeldung erscheint auch ohne TOP 100 PERCENT in der SELECT-Anweisung.

Nun das wird jetzt zwar OT aber hier ein Link wo der Sinn erklärt wird: SQL Server Forums - Why would we use SELECT TOP 100 PERCENT??

cu tb

Ist hier eine Schicht vor PG, die da was macht? Der Fehlertext sieht nicht aus, als käme er von PG.

Andreas

Stimmt genau!

Was ist eine Schicht vor PG? Was ist PG?

PG = PostgreSQL… Der Datenbankserver um den es hier im Forum geht?!

Ich glaube du bist hier falsch gelandet. Du redest glaub ich von einem Microsoft SQL-Server - wie ich vorhin schon mal geschrieben hab…

cu tb.

Wenn Du mit MSSQL hantierst, dann sag das. Und erwarte nicht wirklich Hilfe hier, denn hier geht es um PG. Nach kurzer Googelei vermute ich mal, daß String-Concat mit MSSQL mit + geht und coalesce dort ebenso verfügbar ist. Testen kann und will ich es nicht.

Andreas

Hallo,

sorry, bei Euch war ich dann tatsächlich falsch. Danke für die Hinweise.

Maaaaaan, da habt ihr einen potentiellen User verscheucht!

Ihr sollt ihn bekehren, nicht verschrecken :p :smiley:

Der kommt bestimmt wieder, wenn er erst mal gemerkt hat, das PG besser ist und eine bessere Community hat g Andere gehen Umwege über MySQL…


Andreas