Oracle SQL,连接多列+添加文本


102

所以我基本上想显示此内容(一列中的整行):

我喜欢[类型专栏]蛋糕和[糖衣专栏]和[水果专栏]。

结果应为:

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语句,它可以([column]“一些文本” [column])“ new_column_name”;

我应该知道些什么?

Answers:


144

在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 2015年

1
对于非常老牌的DBMS来说,这是如此丑陋。Oracle为何不支持多参数版本的Concat?但是,感谢Shankar,有一个||。操作员。
斯科特·朱


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

1
非常感谢您的回答。我喜欢'||' 因为它可以更轻松地维护SQL查询。
杰森·特普顿

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”的列条目。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.