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

MS SQL Server Discussion :

extraire chiffre d'un champ en sql


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 88
    Points : 58
    Points
    58
    Par défaut extraire chiffre d'un champ en sql
    Bonjour,
    J'ai un champs d'une tableavec des numéros de téléphone (appellons le champ TEL)
    Le problème est qu'il n'y a eu aucune vérification à l'encodage. Mes numéros de téléphones contiennent donc plein de caractères parasites ( / . - et j'en passe).
    Existe t'il un moyen pour supprimer tout ce qui n'est pas un chiffre, le tout dans ma requête sql.

    Ainsi par exemple j'avais pensé à faire un replace en utilisant les expressions régulières comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT REPLACE (TEL,'^[0-9]','') 
    FROM USERS
    mais ça ne marche pas avec cette fonction.

    merci d'avance pour vos idées.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    Créé la fonction
    create function setnumeric(@str varchar(50)) returns int
    as
    begin
    declare @idx int
    declare @i int


    if @str =''
    return 1
    else
    begin
    Set @idx=len(@str)
    Set @i= 1
    while (@i < @idx)
    begin
    if isnumeric(substring(@str,@idx,1))=0
    SET @str=substring(@str,1,@idx-1)+substring(@str,@idx+1,500)
    Set @idx=@idx-1
    end
    return 1
    end
    end
    puis exécute

    UPDATE USERS SET TEL=setnumeric(TEL)
    Errare humanum est, perseverare diabolicum (Sénèque)

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 88
    Points : 58
    Points
    58
    Par défaut
    Désolé je ne parviens pas à faire fonctionner ta fonctione. Ne manque t'il pas un return vers la fin ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    exact le return est après le end et il faut retourner le varchar
    create function setnumeric(@str varchar(50)) returns varchar(50)
    as
    begin
    declare @idx int
    declare @i int


    if @str =''
    return ''
    else
    begin
    Set @idx=len(@str)
    Set @i= 1
    while (@i < @idx)
    begin
    if isnumeric(substring(@str,@idx,1))=0
    SET @str=substring(@str,1,@idx-1)+substring(@str,@idx+1,500)
    Set @idx=@idx-1
    end
    if isnumeric(substring(@str,1,1))=0
    SET @str=substring(@str,@idx+1,500)

    return @str
    end
    end
    ensuite la requete est

    select dbo.setnumeric(ee) from toto
    excuses
    Errare humanum est, perseverare diabolicum (Sénèque)

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

Discussions similaires

  1. Extraire chiffre d'une chaine en SQL
    Par chillansky dans le forum Langage SQL
    Réponses: 8
    Dernier message: 16/10/2017, 14h47
  2. Réponses: 1
    Dernier message: 15/04/2011, 15h55
  3. [MySQL] Extraire tous les enregistrements identiques d’un même champ en sql
    Par ideal23 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/04/2011, 15h51
  4. Réponses: 2
    Dernier message: 11/12/2008, 18h44
  5. extraire 2 chiffres dans un champ
    Par nick774 dans le forum ASP
    Réponses: 4
    Dernier message: 31/10/2007, 20h30

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