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

PostgreSQL Discussion :

[8.2] Reverse sur une chaîne de caractères [Sources]


Sujet :

PostgreSQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Points : 33
    Points
    33
    Par défaut [8.2] Reverse sur une chaîne de caractères
    Bonjour,

    J'ai une table qui contient des noms de fichiers.

    Je voudrais faire une requête qui me classe alphabétiquement sur ces noms de fichiers.
    J'ai pensé à un truc du style :
    ORDER BY substr(MACOLONNE, 1, char_length(MA_COLONNE) - POSITION('.' IN reverse(MACOLONNE)))

    C'est à dire que je recherche le point de l'extension sur ma chaîne de caractères en partant de la fin et je classe sur le SUBSTR restant.

    Mon problème : Je ne trouve pas de fonction reverse

    Comment puis-je faire ?

  2. #2
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    et sources
    http://postgresql.developpez.com/sou...inverserchaine

    je me permets de la modifier pour y ajouter un paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    CREATE OR REPLACE FUNCTION cocktail.reverse (_str text, _startpos integer) RETURNS text AS
    $body$
    /*
       Inverse la chaine
     
      Exemples : 
    SELECT reverse('forward string',0); -> gnirts drawrof
    SELECT reverse ('forward string',3) -> forgnirts draw
     
    */
    DECLARE
     i integer;
     resultat text = '';
    BEGIN
     FOR i IN REVERSE length(_str)..1 LOOP
      if (i >_startpos) THEN
    	resultat:=resultat||substring(_str from i for 1);
      ELSE
    	resultat:=substring(_str from i for 1)||resultat;
      END IF;
     END LOOP;
     return resultat;
    END;
    $body$
    LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
    _startpos identifie ici le nombre de lettre de début de chaîne que l'on ne souhaite pas inverser
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Points : 33
    Points
    33
    Par défaut
    Merci pour ta réponse.

    Je ne connaissais pas la page sources (le lien correct pour la fonction reverse est celui-là).

    Je ne cherchais pas vraiment dans cette direction puisque c'est pas très difficile d'écrire une fonction qui fait une conversion. En fait je cherchais l'équivalent en PostgreSQL de la fonction native reverse d'ORACLE ou de M$ SQL. Bon ça n'existe pas encore, peut-être dans une prochaine version.

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

Discussions similaires

  1. [Turbo Pascal] Exercice sur une chaîne de caractères
    Par mah00 dans le forum Turbo Pascal
    Réponses: 35
    Dernier message: 10/01/2010, 13h47
  2. Test sur une chaîne de caractères
    Par ThunderBolt_ dans le forum Général VBA
    Réponses: 4
    Dernier message: 27/06/2007, 06h37
  3. recherche sur une chaîne de caractères
    Par bogsy15 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/07/2006, 12h01
  4. Tri sur une chaîne de caractères contenant des nombres
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2006, 11h52
  5. Requête sur une chaîne de caractères
    Par Hakunamatata dans le forum Langage SQL
    Réponses: 9
    Dernier message: 02/04/2006, 18h27

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