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?

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

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....

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 abc@gmail.com 4th street-capetown-sa


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;

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".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.