Oracle SQL, połącz wiele kolumn + dodaj tekst

104

Zasadniczo chcę wyświetlić to (cały wiersz w JEDNEJ kolumnie):

Lubię ciasto [typ kolumny] z [kolumną do lukru] i [kolumną z owocami].

Wynik powinien być:

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.

Potrzebuję jakiegoś stwierdzenia TO_CHAR, które robi ([kolumna] "jakiś tekst" [kolumna]) "nazwa_nowej_kolumny";

Co mam wiedzieć?

Thundordan
źródło

Odpowiedzi:

147

Masz dwie opcje łączenia ciągów w Oracle:

Przykład CONCAT:

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

Na ||przykładzie:

'I like ' || t.type_desc_column || ' cake with ' || t.icing_desc_column || ' and a ' || t.fruit_desc_column
Kucyki OMG
źródło
To jest naprawdę powolne (do uruchomienia, a nie do pisania). Czy jest lepszy sposób?
Patrick Szalapski
1
To jest takie brzydkie w stosunku do DBMS bardzo starej marki. Jak to się dzieje, że Oracle nie wspiera wielopargumentowej wersji Concat? Jednak dzięki Shankarowi istnieje || operator.
Scott Chu
36
select 'i like' || type_column || ' with' ect....
Dani
źródło
1
Dziękuję bardzo za tę odpowiedź. Podoba mi się „||” ponieważ ułatwia obsługę zapytania SQL.
Jason TEPOORTEN,
25

Poniższe zapytanie działa dla mnie @Oracle 10G ----

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

O / P -

1111 [email protected] 4th street-capetown-sa

Chaits
źródło
10

Oracle/PLSQL CONCATFunkcja pozwala złączyć dwa ciągi razem.

CONCAT( string1, string2 )

string1

Pierwszy ciąg do konkatenacji.

string2

Drugi ciąg do konkatenacji.

Na przykład

SELECT 'I like ' || type_column_name || ' cake with ' || 
icing_column_name || ' and a ' fruit_column_name || '.' 
AS Cake FROM table;
Dulith De Costa
źródło
8

Spróbuj tego:

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

Powinien łączyć wszystkie te dane w jedną kolumnę o nazwie „Cake_Column”.

Brodziec
źródło