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

Langage SQL Discussion :

fonction ascii pour un varchar!


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 15
    Points
    15
    Par défaut fonction ascii pour un varchar!
    je recherche une fonction admettant en entree une chaine de caractere
    (disons un varchar) et capable de me fournir en retour un entier ...
    mais attention
    - toujours le meme entier pour la meme chaine de caractere en entree
    - et bien sur des entiers differents pour des chaines de caractere differentes
    ..
    un peu comme le fonction ascii mais
    ascii('toto') = ascii('titi') = ascii('t) = 116

    quelqu'un aurait-il une idee?

  2. #2
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Bonjour,

    que pense tu de ça :
    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
     
    SQL> create or replace function ascii1(x in varchar2) return number as
      2     ret   number := 0;
      3  begin
      4     for i in 1..length(x)
      5     loop
      6        ret := ret*256 + ascii(substr(x, i, 1));
      7     end loop;
      8  
      9     return ret;
     10  end;
     11  /
     
    Function created.
     
    SQL> select ascii1('toto'), ascii1('titi'), ascii1('toto'), ascii1('t')
      2  from   dual;
     
    ASCII1('TOTO') ASCII1('TITI') ASCII1('TOTO') ASCII1('T')                        
    -------------- -------------- -------------- -----------                        
        1953461359     1953068137     1953461359         116
    Sachant qu'un code ascii est entre 0 et 255, on renvoie l'entier correspondant à la chaine de caractère en base 256.


    Ca te convient ?


    Laly.


    PS : comme c'est une question purement Oracle, il est préférable de poster sur le forum Oracle.

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    c'est pas mal mais il faut ajouter la position du caractère dans l'opération, sinon tu ne tiens pas compte des anagrammes

  4. #4
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Non c'est inclus dedans 8) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> select ascii1('TATA'), ascii1('ATAT') from dual;
     
    ASCII1('TATA') ASCII1('ATAT')
    -------------- --------------
        1413567553     1096040788
    la fonction me renvoie T*256^3+A*256^2+T*256*T+A pour la première colonne ou T = ascii('T') et A = ascii('A').


    Laly.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    merci beaucoup laly c'est pile poil ce qu'il me faut
    dommage que ce ne soit pas une fonction fournie par les SGBD ..
    je ne dois pas etre la seule personne a voir ce genre de besoin!

    il faut juste que je regarde les "domaines de valeur" des number et integer
    Je clos la fiche ....

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Excellent

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

Discussions similaires

  1. fonction c pour manipuler la structure date
    Par thomas_b dans le forum Windows
    Réponses: 4
    Dernier message: 28/07/2004, 16h28
  2. [winsock.h] Fonction recv() pour un socket en C
    Par Hikaru dans le forum Windows
    Réponses: 5
    Dernier message: 22/05/2004, 07h43
  3. Des fonctions OGL pour les images de format usuel ?
    Par jamal24 dans le forum OpenGL
    Réponses: 3
    Dernier message: 31/05/2003, 21h59
  4. Fonction/méthode pour obtenir l'IP de la machine
    Par sirex007 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 10/04/2003, 14h36
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

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