Oracle SQL เชื่อมต่อหลายคอลัมน์ + เพิ่มข้อความ


102

โดยพื้นฐานแล้วฉันต้องการแสดงสิ่งนี้ (ทั้งแถวในหนึ่งคอลัมน์):

ฉันชอบเค้ก [type column] กับ [icing column] และ [fruit column]

ผลลัพธ์ควรเป็น:

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.

ฉันต้องการคำสั่ง TO_CHAR บางประเภทที่ทำ ([คอลัมน์] "ข้อความบางส่วน" [คอลัมน์]) "new_column_name";

ฉันควรรู้อะไรบ้าง?

คำตอบ:


145

คุณมีสองตัวเลือกสำหรับการต่อสตริงใน Oracle:

ตัวอย่าง CONCAT:

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

ใช้||ตัวอย่าง:

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

นี่มันช้ามาก (วิ่งไม่ถึงพิมพ์จริงๆ) มีวิธีไหนที่ดีกว่านี้ไหม?
Patrick Szalapski

1
สิ่งนี้น่าเกลียดมากสำหรับ DBMS แบรนด์เก่ามาก เหตุใด Oracle จึงไม่สนับสนุน Concat เวอร์ชันหลายอาร์กิวเมนต์ อย่างไรก็ตามต้องขอบคุณ Shankar ที่มี || ตัวดำเนินการ
Scott Chu


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

1
ขอบคุณมากสำหรับคำตอบนี้ ฉันชอบ '||' เนื่องจากช่วยให้ดูแลรักษาแบบสอบถาม SQL ได้ง่ายขึ้น
Jason TEPOORTEN

25

แบบสอบถามด้านล่างใช้ได้กับฉัน @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 CONCATฟังก์ชั่นช่วยให้การเชื่อมสองสายด้วยกัน

CONCAT( string1, string2 )

สตริง 1

สตริงแรกที่เชื่อมต่อกัน

สตริง 2

สตริงที่สองที่จะเชื่อมต่อกัน

เช่น

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

8

ลองสิ่งนี้:

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

ควรเชื่อมต่อข้อมูลทั้งหมดเป็นรายการคอลัมน์เดียวชื่อ "Cake_Column"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.