116 votes

Oracle SQL, concaténation de plusieurs colonnes + ajout de texte

En gros, je veux afficher ceci (une ligne entière dans une colonne) :

J'aime le gâteau [colonne type] avec [colonne glaçage] et un [colonne 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 d'instruction TO_CHAR qui fasse ([column] "some text" [column]) "new_column_name" ;

Qu'est-ce que je suis censé savoir ?

157voto

OMG Ponies Points 144785

Vous disposez de deux options pour concaténer des chaînes de caractères dans Oracle :

Exemple 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)

Utilisation de || exemple :

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

0 votes

C'est vraiment lent (à exécuter, pas vraiment à taper). Existe-t-il un meilleur moyen ?

1 votes

C'est tellement laid, par rapport à un SGBD de très vieille marque. Comment se fait-il qu'Oracle ne supporte pas la version multi-argumentée de Concat ? Cependant, grâce à Shankar, il y a un opérateur ||.

82voto

Shankar R10N Points 2240

42voto

Dani Points 7744
select 'i like' || type_column || ' with' ect....

2 votes

Merci beaucoup pour cette réponse. J'aime bien le "||" car il facilite la maintenance de la requête SQL.

29voto

Chaits Points 41

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

0voto

Thundordan Points 1

Il me manquait un || et je ne l'ai pas remarqué. Je pensais que l'erreur que j'obtenais était due au fait que j'essayais de renommer la colonne concaténée ou que vous ne pouviez pas concaténer plus de 2 colonnes.

Merci :D

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X