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 Firebird Discussion :

enlever les caractères non numériques


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    580
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2002
    Messages : 580
    Par défaut enlever les caractères non numériques
    Bonsoir,

    je suis entrain de faire la maintenance d'une vielle application qui tourne avec Firebird 2.1


    je cherche un moyen en natif donc pas de UDF via une fonction par exemple , d'enlever tout les caractères non numérique d'une chaine donnée,

    donc si j'ai : ABCD2015 je dois avoir 2015 .

    si c'est impossible en 2.1, est ce possible en 2.5 ... 3.0 ?


    merci et bonne fin de journée !

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 635
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    il faudrait voir avec la fonction REPLACE présente dès la version 2.1
    seulement je ne vois pas de solution autre que de le faire lettre par lettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT REPLACE(REPLACE(REPLACE('ABC2015','A',''),'B',''),'C','') FROM RDB$DATABASE
    donnera bien '2015'

    maintenant en créant une procédure , la fonction ASCII_CHAR() et une boucle couplée au REPLACE

    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
    SET TERM ^ ;
    CREATE PROCEDURE OTERLETTRES (
        DEPART Varchar(30) )
    RETURNS (
        ARRIVEE Varchar(30) )
    AS
    DECLARE VARIABLE I INTEGER; 
    BEGIN
      ARRIVEE=UPPER(DEPART);
      i=65; -- A
      while (i <91 ) do -- to Z
      begin
       ARRIVEE=REPLACE(ARRIVEE,ASCII_CHAR(i),'');
       i = i + 1;
      end
      SUSPEND;
    END^
    SET TERM ; ^
    testé sous fb 2.5 en tout cas , ça le fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT p.ARRIVEE
    FROM OTERLETTRES ('ABCDWXYZ1234') p
    -> 1234

  3. #3
    Membre très actif Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    580
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2002
    Messages : 580
    Par défaut
    WOW !

    Merci chef !

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

Discussions similaires

  1. [PL/SQL] Supprimer les caractères non numériques
    Par Oliveuh dans le forum PL/SQL
    Réponses: 6
    Dernier message: 25/06/2015, 12h13
  2. [RegEx] Supprimer les caractères non alpha numérique
    Par Opsse dans le forum Langage
    Réponses: 4
    Dernier message: 12/05/2013, 21h00
  3. Réponses: 2
    Dernier message: 18/04/2012, 09h56
  4. Enlever les caractères non A-Z 0-9 d'une chaine
    Par Lucas Panny dans le forum SQL
    Réponses: 15
    Dernier message: 28/11/2008, 08h13
  5. [C#][ADO] Enlever les caractère spéciaux
    Par Oberown dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/01/2005, 18h38

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