Oracle SQL, concaténer plusieurs colonnes + ajouter du texte

102

Donc, je veux essentiellement afficher ceci (ligne entière dans UNE colonne):

J'aime le gâteau [type colonne] avec [colonne de glaçage] et [colonne de fruits].

Le résultat devrait être:

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.

J'ai besoin d'une sorte de déclaration TO_CHAR qui fait ([colonne] "un texte" [colonne]) "nouveau_nom_colonne";

Que suis-je censé savoir?

Thundordan
la source

Réponses:

145

Vous avez deux options pour concaténer des chaînes dans Oracle:

Exemple CONCAT:

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

En utilisant l' ||exemple:

'I like ' || t.type_desc_column || ' cake with ' || t.icing_desc_column || ' and a ' || t.fruit_desc_column
Poneys OMG
la source
C'est vraiment lent (à exécuter, pas vraiment à taper). Y a-t-il une meilleure façon?
Patrick Szalapski
1
C'est tellement moche, par rapport à un SGBD très ancien. Comment se fait-il qu'Oracle ne prenne pas en charge la version à plusieurs arguments de Concat? Cependant, grâce à Shankar, il y a un || opérateur.
Scott Chu
36
select 'i like' || type_column || ' with' ect....
Dani
la source
1
Merci beaucoup pour cette réponse. J'aime le '||' car cela facilite la maintenance de la requête SQL.
Jason TEPOORTEN
25

La requête ci-dessous fonctionne pour moi @Oracle 10G ----

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

O / P -

1111 [email protected] 4e rue-capetown-sa

Chaits
la source
10

La Oracle/PLSQL CONCATfonction permet de concaténer deux chaînes ensemble.

CONCAT( string1, string2 )

string1

La première chaîne à concaténer.

string2

Deuxième chaîne à concaténer.

Par exemple

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

Essaye ça:

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

Il doit concaténer toutes ces données en une seule entrée de colonne nommée "Cake_Column".

Bécasseau
la source