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

Développement SQL Server Discussion :

[SQL Server 2000] Renvoyer NULL lorsqu'un CAST échoue


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    J1
    J1 est déconnecté
    Membre expérimenté Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Par défaut [SQL Server 2000] Renvoyer NULL lorsqu'un CAST échoue
    Bonjour,

    est-il possible, lors d'un CAST, de renvoyer NULL si la conversion échoue ?

    De telle sorte que...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST('12C45' AS INTEGER)
    ... renvoie NULL au lieu d'une erreur.

    Si ce n'est pas possible, une UDF conviendrait tout à fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT myIntegerCast('12345') -- renverrait 12345
    SELECT myIntegerCast('12C45') -- renverrait NULL
    Mais, ne sachant pas comment gérer proprement les erreurs en TRANSACT-SQL, je ne parviens pas à écrire cette UDF.

    Merci d'avance pour votre aide.

    PS : Je précise que je cherche à réaliser une vraie gestion des erreurs, et non à essayer d'anticiper les différents cas de figure qui feraient que la chaîne ne pourrait pas être convertie en numérique.
    En fait, je recherche l'équivalent en TRANSACT-SQL de la fonction que j'ai pour l'instant déportée côté applicatif (c'est-à-dire en VB) :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function fvarChaineConvertieEnLong(pstrChaine As String) As Variant
    'Cette fonction tente de convertir en entier long la chaîne de caractères
    'passée en paramètre. Si la conversion est impossible, la fonction renvoie NULL.
        On Error GoTo ErreurConversion
        fvarChaineConvertieEnLong = CLng(pstrChaine)
        On Error GoTo 0
     
    Exit Function
    ErreurConversion:
        fvarChaineConvertieEnLong = Null
     
    End Function

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vous ne pouvez pas faire cela parce que vous ne pouvez pas gérer les erreurs dans une fonction.
    En revanche, vous pouvez utiliser la fonction ISNUMERIC(), qui renvoie 1 si la chaîne de caractères ne contient que des entiers (mais aussi et malheureusement "-", ".", "+") et 0 à l'inverse.
    Vous pouvez voir ici comment vous en sortir en vous inspirant de l'ALTER FUNCTION

    @++

  3. #3
    J1
    J1 est déconnecté
    Membre expérimenté Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Vous ne pouvez pas faire cela parce que vous ne pouvez pas gérer les erreurs dans une fonction.
    Citation Envoyé par elsuket Voir le message
    Vous pouvez voir ici comment vous en sortir en vous inspirant de l'ALTER FUNCTION
    Quel dommage qu'on ne puisse pas implémenter de gestion d'erreurs dans une UDF. Mais pour mon besoin spécifique, votre fonction fera tout à fait l'affaire.
    Un grand merci, elsuket !

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

Discussions similaires

  1. sql server 2000 - atteindre champ Null
    Par poosh dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/07/2006, 17h10
  2. Certification 70-228 sql server 2000
    Par Cotentin dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/11/2003, 09h01
  3. Débutant : SQL Server 2000
    Par bd0606 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/10/2003, 11h33
  4. Migration de MS SQL 7 vers MS SQL server 2000
    Par jfphan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/10/2003, 11h24
  5. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15

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