Oracle SQL, birden çok sütunu birleştirin + metin ekleyin


104

Bu yüzden temelde şunu görüntülemek istiyorum (tüm satır bir sütunda):

[Krema sütunu] ve [meyve sütunu] içeren [sütun türü] kekini seviyorum.

Sonuç şöyle olmalıdır:

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.

([Sütun] "bir metin" [sütun]) "yeni_sütun_adı" yapan bir tür TO_CHAR deyimine ihtiyacım var;

Ne bilmem gerekiyor?

Yanıtlar:


147

Oracle'da dizeleri birleştirmek için iki seçeneğiniz vardır:

CONCAT örneği:

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

||Örnek kullanarak :

'I like ' || t.type_desc_column || ' cake with ' || t.icing_desc_column || ' and a ' || t.fruit_desc_column

Bu gerçekten yavaş (koşmak, yazmak değil). Daha iyi bir yol var mı?
Patrick Szalapski

1
Bu, çok eski marka bir DBMS'ye göre çok çirkin. Oracle neden çok argümanlı Concat'ı desteklemiyor? Ancak, Shankar sayesinde, bir || Şebeke.
Scott Chu


36
select 'i like' || type_column || ' with' ect....

1
Bu cevap için çok teşekkür ederim. '||' ı beğendim SQL sorgusunun bakımını kolaylaştırdığı için.
Jason TEPOORTEN

25

Aşağıdaki sorgu benim için çalışıyor @Oracle 10G ---

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

O / P -

1111 abc@gmail.com 4. cadde-capetown-sa


10

Oracle/PLSQL CONCATFonksiyon birlikte iki dizeyi bitiştirmek için izin verir.

CONCAT( string1, string2 )

string1

Birleştirilecek ilk dize.

string2

Birleştirilecek ikinci dize.

Örneğin

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

8

Bunu dene:

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

Tüm bu verileri "Cake_Column" adlı tek bir sütun girişi olarak birleştirmelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.