[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:
SELECT CAST('12C45' AS INTEGER)
... renvoie NULL au lieu d'une erreur.
Si ce n'est pas possible, une UDF conviendrait tout à fait :
Code:
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:
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 |