Oracle SQL, mehrere Spalten verketten + Text hinzufügen

102

Ich möchte dies also grundsätzlich anzeigen (ganze Zeile in EINER Spalte):

Ich mag [Typensäule] Kuchen mit [Zuckergusssäule] und einer [Fruchtsäule].

Das Ergebnis sollte sein:

Cake_Column
----------------

I like chocolate cake with whipped_cream and a cherry.

I like strawberry cake with vanilla_cream and a lemon_slice.

etc.

etc.

Ich benötige eine TO_CHAR-Anweisung, die ([Spalte] "Text" [Spalte]) "new_column_name" ausführt.

Was soll ich wissen?

Thundordan
quelle

Antworten:

144

Sie haben zwei Möglichkeiten, Zeichenfolgen in Oracle zu verketten:

CONCAT Beispiel:

CONCAT(
  CONCAT(
    CONCAT(
      CONCAT(
        CONCAT('I like ', t.type_desc_column), 
        ' cake with '), 
      t.icing_desc_column),
    ' and a '),
  t.fruit_desc_column)

Am ||Beispiel:

'I like ' || t.type_desc_column || ' cake with ' || t.icing_desc_column || ' and a ' || t.fruit_desc_column
OMG Ponys
quelle
Dies ist sehr langsam (zu laufen, nicht wirklich zu tippen). Gibt es einen besseren Weg?
Patrick Szalapski
1
Dies ist in Bezug auf ein DBMS einer sehr alten Marke so hässlich. Wie kommt es, dass Oracle Concat mit vielen Argumenten nicht unterstützt? Dank Shankar gibt es jedoch ein || Operator.
Scott Chu
36
select 'i like' || type_column || ' with' ect....
Dani
quelle
1
Vielen Dank für diese Antwort. Ich mag das '||' Dies erleichtert die Verwaltung der SQL-Abfrage.
Jason TEPOORTEN
25

Die folgende Abfrage funktioniert für mich @Oracle 10G ----

select PHONE, CONTACT, (ADDR1 ||  '-' || ADDR2 || '-' || ADDR3) as Address
from CUSTOMER_DETAILS
where Code='341'; 

O / P -

1111 [email protected] 4. Straße-Kapstadt-sa

Chaits
quelle
10

Mit dieser Oracle/PLSQL CONCATFunktion können zwei Zeichenfolgen miteinander verknüpft werden.

CONCAT( string1, string2 )

string1

Die erste zu verkettende Zeichenfolge.

string2

Die zweite zu verkettende Zeichenfolge.

Z.B

SELECT 'I like ' || type_column_name || ' cake with ' || 
icing_column_name || ' and a ' fruit_column_name || '.' 
AS Cake FROM table;
Dulith De Costa
quelle
8

Versuche dies:

SELECT 'I like ' || type_column_name || ' cake with ' || 
icing_column_name || ' and a ' fruit_column_name || '.' 
AS Cake_Column FROM your_table_name;

Es sollte alle diese Daten als einen einzelnen Spalteneintrag mit dem Namen "Cake_Column" verketten.

Strandläufer
quelle