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

HyperFileSQL Discussion :

Conversion d'une chaine en nombre [HF18]


Sujet :

HyperFileSQL

  1. #1
    jc2
    jc2 est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 27
    Points : 33
    Points
    33
    Par défaut Conversion d'une chaine en nombre
    Bonjour,
    J'ai une colonne qui contient des éléments séparés par /. Le dernier élément est un nombre. Je voudrais récupérer cet colonne par ordre croissant sur le dernier élément.
    La requête que j'ai écrite est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT T.NoControle AS NoControle, VAL(SPLIT_PART(T.NoColonne, '/', 5)) AS CritereTri
    FROM T
    WHERE T.NoControle like {Param1}%
    ORDER BY
    VAL(SPLIT_PART(T.NoColonne, '/', 5)) ASC
    Mais quand je teste, j'obtiens l'erreur les procédures stockées ne sont pas autorisées dans HyperFile.

    Est-ce qu'il existe une fonction VAL ou équivalente qui convertit une chaîne en numérique comme to_char dans ORACLE ?

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 162
    Points : 308
    Points
    308
    Par défaut
    Bonjour,

    Vu que Val n'est pas une fonction type SQL pour hyperfile, il faudrait le préfixer par WL. Le code SQL s'écrira comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T.NoControle AS NoControle, WL.Val(SPLIT_PART(T.NoColonne, '/', 5)) AS CritereTri
    FROM T
    WHERE T.NoControle LIKE {Param1}
    ORDER BY WL.Val(SPLIT_PART(T.NoColonne, '/', 5)) ASC
    Cordialement

  3. #3
    jc2
    jc2 est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 27
    Points : 33
    Points
    33
    Par défaut
    Merci.

    Je viens d'essayer cette solution mais j'ai l'erreur "Mot inattendu" quand je teste la requête. En revanche, j'ai fini par essayer CAST avec l'option AS INTEGER et cela fonctionne.

    Si personne ne voit d'où peut provenir l'erreur, je mettrai la discussion à résolue demain.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 162
    Points : 308
    Points
    308
    Par défaut
    salut,

    Si cela fonctionne avec le CAST, je pense que c'est une excellente solution.
    Pour l'erreur du "Mot inattendu", je pense que c'est lié au % que vous mettez après {Param1}. Merci de le préciser si vous l'avez enlevé.

    Cordialement.

  5. #5
    jc2
    jc2 est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 27
    Points : 33
    Points
    33
    Par défaut
    En fait, la requête qui fonctionne est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT T.NoControle AS NoControle, 
    CAST(SPLIT_PART((T.NoColonne, '/', 5) AS INTEGER) AS CritereTri
    FROM T
    WHERE T.NoControle LIKE '{Param1}%'
    ORDER BY CAST(SPLIT_PART((T.NoColonne, '/', 5) AS INTEGER) ASC
    Je mets en Résolu.

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2012
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 162
    Points : 308
    Points
    308
    Par défaut
    Désolé de vous avoir induit en erreur jc2.

    Cordialement.

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

Discussions similaires

  1. [VBA Excel] conversion d'une chaine en numérique
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/12/2005, 17h56
  2. [VBA][EXCEL]Conversion d'une chaine en single
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/11/2005, 17h28
  3. conversion d'une chaine de caractère en int
    Par greg13 dans le forum C++
    Réponses: 3
    Dernier message: 25/08/2005, 16h18
  4. [string->HTML] Conversion d'une chaine en HTML
    Par salome dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 24/07/2005, 16h27
  5. Conversion d'une chaine de char en numerique
    Par simone.51 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 25/03/2004, 16h47

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