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 :

Supprimer deux derniers caractère Oracle SQL


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 124
    Par défaut Supprimer deux derniers caractère Oracle SQL
    Bonjour,

    J'ai le nom d'une ville + le code du département regroupé ensemble de la manière suivante: Paris75

    Je souhaiterai récupérer uniquement le nom de la ville et je me posais la question suivante (vu que je n'ai pas de requêteur SQL pour effectuer mon test) , avec la fonction SUBSTRING utilisé de la manière suivante est-ce que ça fonctionnerai ?

    pour récupérer uniquement "Paris'".

    Merci d'avance pour vos retours

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 952
    Par défaut
    Sur Oracle, c'est SUBSTR et pas SUBSTRING, à voir si vous êtes dans le bon forum.
    Par ailleurs attention au DOM TOM qui ont un code sur 3 chiffres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL> select substr('Paris75',1,length('Paris75')-2) from dual;
     
    SUBST
    -----
    Paris
     
    SQL>

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 124
    Par défaut
    Merci pour la solution que vous m'avez apporté

    Effectivement je n'avais pas pensé au cas des DOM-TOM. Mais dans ce cas comment gérer ce cas là ?

    Merci d'avance

  4. #4
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    On peut savoir pourquoi dans cette table il y a une colonne avec des données non atomiques?
    Il aurait fallu créer une colonne Ville et une colonne Département, d'un point de vue modélisation c'set beaucoup plus propre et ça évite les ennuis que tu as actuellement.

    En outre, comme le dit skuatamad, tu vas avoir le problème des DOM-TOM : 3 chiffres dans un cas, 2 dans l'autre...
    Une solution serait, dans le cas où tu as la colonne VILLE avec les données "Ville75", "Ville852", de faire
    substr(VILLE,1,length(VILLE)-INSTR(VILLE, premier_chiffre))
    avec, bien sur, un problème pour écrire en SQL la partie "premier_chiffre".

    Je continue de chercher mais ça semble pas simple.
    Ah si, il faut utiliser REGEXP_INSTR

    Bon, finalement on peut utiliser la requête suivante : substr(object_name,1,regexp_instr(object_name, '[[:digit:]]') -1)
    Voici un exemple sur le dictionnaire de données d'Oracle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select object_name, 
    substr(object_name,1,regexp_instr(object_name, '[[:digit:]]') -1) AS "Pas de chiffre"
    from dba_objects where object_name like '%155';
     
    OBJECT_NAME	Pas de chiffre
    ------------------------------------
    SYS_C0047155	SYS_C
    VW_IND155	VW_IND

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 124
    Par défaut
    En fait je travail sur l'ETL STAMBIA et j'alimente une table oracle par le biais d'un fichier XML.

    Dans le fichier xml la ville et le departement sont dans une seule balise.

    Voila le pourquoi du "Ce n'est pas automatisé"


    J'avais oublié ce que faisait la fonction "REGEXP_INSTR " mais comment lui indiquer de rechercher uniquement les caractère numérique ?

  6. #6
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Nos messages se sont croisés, regarde ce que j'ai mis plus haut : substr(object_name,1,regexp_instr(object_name, '[[:digit:]]') -1) AS "Pas de chiffre"
    C'set un peu violent comme code mais ça marche.

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 124
    Par défaut
    Effectivement nos messages se sont croisés.

    Déjç merci pour ton code.

    Je l'ai testé mais ça me sors le nom de la ville au lieu de me sortir le code postale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select substr(Ville,1,regexp_instr(Ville,'[[:digit:]]')-1) 
    from STAMBIA.ADRESSE_CLIENT
    Nom : Capture.JPG
Affichages : 2869
Taille : 16,2 Ko


    Alors que je souhaiterai uniquement extraire les code postale (ici 64)
    Nom : Capture.JPG
Affichages : 2814
Taille : 9,7 Ko

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2011, 06h49
  2. Supprimer le dernier caractère d'une string
    Par calagan99 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/07/2007, 10h31
  3. Supprimer le dernier caractère "€"?
    Par wormseric dans le forum Langage
    Réponses: 3
    Dernier message: 04/06/2007, 16h52
  4. Réponses: 15
    Dernier message: 28/02/2007, 10h00
  5. [Chaines] Supprimer le dernier caractère
    Par Commodore dans le forum Langage
    Réponses: 1
    Dernier message: 27/06/2006, 09h35

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