Oracle SQL, nối nhiều cột + thêm văn bản


102

Vì vậy, về cơ bản tôi muốn hiển thị điều này (toàn bộ hàng trong MỘT cột):

Tôi thích bánh [loại cột] với [cột đóng băng] và [cột trái cây].

Kết quả sẽ là:

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.

Tôi cần một số loại câu lệnh TO_CHAR có ([column] "some text" [column]) "new_column_name";

Tôi phải biết những gì?

Câu trả lời:


144

Bạn có hai tùy chọn để nối các chuỗi trong Oracle:

Ví dụ CONCAT:

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

Sử dụng ||ví dụ:

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

Điều này thực sự chậm (để chạy, không thực sự để gõ). Có cách nào tốt hơn không?
Patrick Szalapski

1
Điều này thật tệ hại, đối với một DBMS thương hiệu rất cũ. Tại sao Oracle không hỗ trợ Concat phiên bản nhiều đối số? Tuy nhiên, nhờ Shankar, có một || nhà điều hành.
Scott Chu


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

1
Cảm ơn bạn rất nhiều vì câu trả lời này. Tôi thích '||' vì nó giúp duy trì truy vấn SQL dễ dàng hơn.
Jason TEPOORTEN

25

Truy vấn bên dưới phù hợp với tôi @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

Các Oracle/PLSQL CONCATchức năng cho phép để nối hai chuỗi với nhau.

CONCAT( string1, string2 )

string1

Chuỗi đầu tiên để nối.

string2

Chuỗi thứ hai để nối.

Ví dụ

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

8

Thử cái này:

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

Nó sẽ nối tất cả dữ liệu đó dưới dạng một mục cột duy nhất có tên là "Cake_Column".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.