Oracle SQL, concatene várias colunas + adicione texto


102

Então, basicamente, quero exibir isto (linha inteira em UMA coluna):

Eu gosto de bolo de [coluna tipo] com [coluna de cobertura] e uma [coluna de frutas].

O resultado deve ser:

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.

Eu preciso de algum tipo de instrução TO_CHAR que faça ([coluna] "algum texto" [coluna]) "new_column_name";

O que devo saber?

Respostas:


144

Você tem duas opções para concatenar strings no Oracle:

Exemplo de CONCAT:

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

Usando o ||exemplo:

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

Isso é muito lento (para executar, não realmente para digitar). Existe alguma maneira melhor?
Patrick Szalapski

1
Isso é tão feio em relação a um DBMS de marca muito antiga. Como é que a Oracle não suporta o Concat com muitos argumentos? No entanto, graças a Shankar, há um || operador.
Scott Chu


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

1
Muito obrigado por esta resposta. Eu gosto do '||' pois torna mais fácil manter a consulta SQL.
Jason TEPOORTEN

25

A consulta abaixo funciona para mim @Oracle 10G ----

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

O / P -

1111 abc@gmail.com 4ª rua-capetown-sa


10

A Oracle/PLSQL CONCATfunção permite concatenar duas strings.

CONCAT( string1, string2 )

string1

A primeira string a concatenar.

string2

A segunda string para concatenar.

Por exemplo

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

8

Experimente isto:

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

Ele deve concatenar todos os dados como uma única entrada de coluna chamada "Cake_Column".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.