IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

substr + replace dans un select


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2010
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 376
    Par défaut substr + replace dans un select
    Bonjour,

    Je cherche désespérément à faire apparaître un substr + un replace dans une même colonne lors d'un select.

    Je voudrais afficher le volume présent dans une colonne à un emplacement dont la longueur est un peu aléatoire : j'ai donc utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substr (matable.VOLUME, 19, 7),
    pour être large mais je peux dans ce cas déborder sur les informations suivantes, séparée par un -.

    J'ai donc pensé à remplacer le - par un espace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    replace (matableVOLUME, '-', ''
    mais je ne parviens pas à lier les 2 pour que tout s'affiche dans une seule et même colonne et non pas sur 2 comme ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select 
    substr (matable.VOLUME, 19, 7),
    replace (matableVOLUME, '-', '')
    from matable
    Quelqu'un aurait-il une idée ?

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 427
    Par défaut
    Bonjour,
    Peut être en faisant un replace(substr(...)), bref comme avec n'importe quel langage ?

    Tatayo.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2010
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 376
    Par défaut
    C'est ce que j'ai tenté de faire au départ avec une requête de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select 
    replace (replace (substr (matable.VOLUME, 19, 7), '-', ''))
    from matable
    Mais j'obtiens l'erreur suivante :"ORA-00938: nombre d'arguments insuffisant pour la fonction"

    Aussi avais-je pensé que je n'utilisais pas la bonne fonction alors qu'il s'agit peut-être d'une mauvaise syntaxe ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 427
    Par défaut
    Il y a surtout un problème de paramètres.
    Si j'enlève le premier REPLACE:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select 
    replace (substr (matable.VOLUME, 19, 7), '-', '')
    from matable
    On voit donc qu'il manque des paramètres pour l'autre REPLACE. Que doit-il remplacer, et par quoi ? C'est précisément ce qu'il manque. Et ces paramètres doivent se retrouver entre les deux parenthèses fermantes dans ta requête.

    Tatayo.

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2010
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 376
    Par défaut
    Le 2e replace doit remplacer un - pour du vide ('')

    Mais je n'arrive pas à les inclure de manière concluante dans la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    replace (replace (substr (matable.VOLUME, 19, 7), substr (matable.VOLUME, '-', '')))
    Mais j'obtiens la même erreur.

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 427
    Par défaut
    Si le deuxième replace remplace un tiret par du vide, que remplace le premier ?
    Je ne vois pas l'utilité ici d'utiliser 2 remplace.
    Si je comprends bien le besoin, la requête telle que je l'ai écrite fait le job.

    Tatayo.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2008R2] Faire un Replace avec un Regex dans un select
    Par Sql2008 dans le forum Développement
    Réponses: 1
    Dernier message: 29/07/2013, 16h47
  2. [interbase][SQL] concatener 2 champs dans le select
    Par Harry dans le forum Bases de données
    Réponses: 10
    Dernier message: 09/03/2006, 06h45
  3. Joindre une valeur arbitraire dans un SELECT
    Par Tuxxy dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/01/2004, 17h04
  4. Réponses: 3
    Dernier message: 23/09/2003, 09h12
  5. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo