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ć?

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

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....

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 abc@gmail.com 4th street-capetown-sa


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;

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”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.