TSQL : convertir des chaînes en entiers avec une valeur par défaut ou NULL
La conversion de chaînes en entiers est une tâche courante dans T-SQL. Cependant, lorsque la conversion n'est pas possible, une erreur peut survenir. Pour gérer de telles situations, T-SQL fournit une approche utile qui vous permet de renvoyer une valeur par défaut ou NULL si la conversion échoue.
Solution
La solution consiste à utiliser la fonction ISNUMERIC() pour vérifier si la chaîne peut être convertie en entier. Si la conversion est possible, la fonction CAST() est utilisée pour convertir la chaîne en entier. Sinon, une valeur par défaut ou NULL est renvoyée.
L'extrait de code suivant illustre cette approche :
DECLARE @text AS NVARCHAR(10) SET @text = '100' SELECT CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END -- returns 100 SET @text = 'XXX' SELECT CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END -- returns NULL
Dans cet exemple, la première instruction SELECT renvoie 100 car « 100 » peut être converti à un entier. La deuxième instruction SELECT renvoie NULL car « XXX » ne peut pas être converti en entier.
Considérations
Il est important de noter que la fonction ISNUMERIC() présente certaines limitations. Comme l'a souligné Fedor Hajdu, cela peut renvoyer vrai pour les chaînes contenant certains caractères, tels que $ (devise), , (séparateurs) et -. Par conséquent, il est recommandé d'utiliser ISNUMERIC() avec prudence lors de la validation des entrées pour les conversions entières.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!