Conversion de chaînes en entiers avec des valeurs par défaut dans T-SQL
Dans T-SQL, il est souvent nécessaire de convertir une chaîne (nvarchar ) valeur en un type de données entier (int). Toutefois, cette conversion peut échouer si la chaîne contient des caractères non numériques. Pour gérer de tels scénarios avec élégance, il devient nécessaire de renvoyer une valeur par défaut ou NULL si la conversion échoue.
Pour y parvenir, l'expression CASE, en conjonction avec la fonction ISNUMERIC(), peut être utilisée. ISNUMERIC() évalue si une chaîne représente une valeur numérique valide, renvoyant 1 si vrai et 0 si faux.
Syntaxe :
CASE WHEN ISNUMERIC(@variable) = 1 THEN CAST(@variable AS INT) ELSE NULL END
Exemples :
Considérez ce qui suit exemple :
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 le premier cas, puisque « 100 » est un entier valide, la conversion réussit et renvoie la valeur 100. Dans le second cas, « XXX » n'est pas une valeur numérique, donc le La fonction ISNUMERIC() renvoie 0, provoquant le retour de l'expression CASE NULL.
Considérations :
Il convient de noter que ISNUMERIC() a certaines limitations. Par exemple, il peut renvoyer vrai pour les chaînes contenant des symboles monétaires ($), des séparateurs (,) ou (.) et des opérateurs arithmétiques ( , -). Par conséquent, une validation supplémentaire peut être nécessaire pour garantir l’intégrité de la conversion.
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!