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

Thu*_*dan 92 sql oracle concatenation

所以我基本上想要显示这个(整列在一列):

我喜欢[icyl column]和[fruit column]的[type column] cake.

结果应该是:

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.
Run Code Online (Sandbox Code Playgroud)

我需要某种类型的TO_CHAR语句([column]"some text"[column])"new_column_name";

我该怎么知道?

OMG*_*ies 135

在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)
Run Code Online (Sandbox Code Playgroud)

使用||示例:

'I like ' || t.type_desc_column || ' cake with ' || t.icing_desc_column || ' and a ' || t.fruit_desc_column
Run Code Online (Sandbox Code Playgroud)

  • 对于一个非常老牌的 DBMS 来说,这实在是太丑陋了。为什么Oracle不支持多参数版本Concat?然而,多亏了 Shankar,有了 || 操作员。 (2认同)

Dan*_*ani 32

select 'i like' || type_column || ' with' ect....
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢您的回答。我喜欢'||' 因为它可以更轻松地维护 SQL 查询。 (2认同)

小智 25

以下查询适用于我@Oracle 10G ----

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

O/P -

1111 abc@gmail.com第四街 - 开普敦 - 萨


Dul*_*sta 9

Oracle/PLSQL CONCAT函数允许将两个字符串连接在一起。

CONCAT( string1, string2 )
Run Code Online (Sandbox Code Playgroud)

字符串1

要连接的第一个字符串。

字符串2

要连接的第二个字符串。

例如

SELECT 'I like ' || type_column_name || ' cake with ' || 
icing_column_name || ' and a ' fruit_column_name || '.' 
AS Cake FROM table;
Run Code Online (Sandbox Code Playgroud)


San*_*per 8

试试这个:

SELECT 'I like ' || type_column_name || ' cake with ' || 
icing_column_name || ' and a ' fruit_column_name || '.' 
AS Cake_Column FROM your_table_name;
Run Code Online (Sandbox Code Playgroud)

它应该将所有数据连接为名为"Cake_Column"的单个列条目.