Oracle SQL, concatenar varias columnas + agregar texto

102

Así que básicamente quiero mostrar esto (fila completa en UNA columna):

Me gusta el pastel [columna de tipo] con [columna de glaseado] y una [columna de frutas].

El resultado debería 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.

Necesito algún tipo de declaración TO_CHAR que haga ([columna] "algo de texto" [columna]) "new_column_name";

¿Qué se supone que debo saber?

Thundordan
fuente

Respuestas:

145

Tiene dos opciones para concatenar cadenas en Oracle:

Ejemplo 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 ||ejemplo:

'I like ' || t.type_desc_column || ' cake with ' || t.icing_desc_column || ' and a ' || t.fruit_desc_column
Ponis dios mio
fuente
Esto es muy lento (para ejecutar, no para escribir). ¿Hay alguna forma mejor?
Patrick Szalapski
1
Esto es tan feo, con respecto a un DBMS de marca muy antigua. ¿Cómo es que Oracle no admite Concat con versiones de muchos argumentos? Sin embargo, gracias a Shankar, hay un || operador.
Scott Chu
36
select 'i like' || type_column || ' with' ect....
Dani
fuente
1
Muchas gracias por esta respuesta. Me gusta el '||' ya que facilita el mantenimiento de la consulta SQL.
Jason TEPOORTEN
25

La siguiente consulta funciona para mí @Oracle 10G ----

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

O / P -

1111 [email protected] 4th street-capetown-sa

Chaits
fuente
10

La Oracle/PLSQL CONCATfunción permite concatenar dos cadenas juntas.

CONCAT( string1, string2 )

cadena1

La primera cadena para concatenar.

cadena2

La segunda cadena para concatenar.

P.ej

SELECT 'I like ' || type_column_name || ' cake with ' || 
icing_column_name || ' and a ' fruit_column_name || '.' 
AS Cake FROM table;
Dulith De Costa
fuente
8

Prueba esto:

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

Debería concatenar todos esos datos como una entrada de una sola columna denominada "Cake_Column".

Lavandera
fuente