Bonjour,
est-il possible, lors d'un CAST, de renvoyer NULL si la conversion échoue ?
De telle sorte que...
... renvoie NULL au lieu d'une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT CAST('12C45' AS INTEGER)
Si ce n'est pas possible, une UDF conviendrait tout à fait :
Mais, ne sachant pas comment gérer proprement les erreurs en TRANSACT-SQL, je ne parviens pas à écrire cette UDF.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT myIntegerCast('12345') -- renverrait 12345 SELECT myIntegerCast('12C45') -- renverrait NULL
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
Partager