Oracle SQL, gabungkan beberapa kolom + tambahkan teks

102

Jadi pada dasarnya saya ingin menampilkan ini (seluruh baris dalam SATU kolom):

Saya suka kue [jenis kolom] dengan [kolom icing] dan [kolom buah].

Hasilnya harus:

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.

Saya memerlukan semacam pernyataan TO_CHAR yang tidak ([kolom] "beberapa teks" [kolom]) "nama_kolom baru";

Apa yang harus saya ketahui?

Thundordan
sumber

Jawaban:

145

Anda memiliki dua opsi untuk menggabungkan string di Oracle:

Contoh CONCAT:

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

Menggunakan ||contoh:

'I like ' || t.type_desc_column || ' cake with ' || t.icing_desc_column || ' and a ' || t.fruit_desc_column
OMG Ponies
sumber
Ini sangat lambat (untuk dijalankan, tidak benar-benar untuk mengetik). Apakah ada cara yang lebih baik?
Patrick Szalapski
1
Ini sangat buruk, sehubungan dengan DBMS merek yang sangat lama. Kenapa Oracle tidak mendukung Concat versi banyak argumen? Namun, berkat Shankar, ada || operator.
Scott Chu
36
select 'i like' || type_column || ' with' ect....
Dani
sumber
1
Terima kasih banyak atas jawaban ini. Saya suka '||' karena membuatnya lebih mudah untuk mempertahankan kueri SQL.
Jason TEPOORTEN
25

Kueri di bawah ini cocok untuk saya @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
sumber
10

The Oracle/PLSQL CONCATFungsi memungkinkan untuk menggabungkan dua string bersama-sama.

CONCAT( string1, string2 )

string1

String pertama yang digabungkan.

string2

String kedua untuk digabungkan.

Misalnya

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

Coba ini:

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

Ini harus menggabungkan semua data itu sebagai entri kolom tunggal bernama "Cake_Column".

Burung kedidi
sumber