Maison >base de données >tutoriel mysql >Comment convertir en toute sécurité des chaînes NVARCHAR en entiers dans T-SQL et gérer les erreurs de conversion ?

Comment convertir en toute sécurité des chaînes NVARCHAR en entiers dans T-SQL et gérer les erreurs de conversion ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-31 02:05:09437parcourir

How to Safely Cast NVARCHAR Strings to Integers in T-SQL and Handle Conversion Errors?

Conversion de chaînes en entiers et gestion des échecs de conversion

Dans T-SQL, nous pouvons rencontrer des scénarios dans lesquels nous devons convertir un type de données nvarchar à un entier mais gère les cas où la conversion échoue. Une méthode pour y parvenir consiste à combiner la fonction CAST et la fonction ISNUMERIC().

Conversion avec une valeur par défaut

Pour convertir une chaîne nvarchar en un entier et renvoyer une valeur par défaut si la conversion échoue, nous pouvons utiliser l'instruction CASE comme suit :

SELECT CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE <default value> END

Dans ce expression :

  • @text est la variable nvarchar à convertir.
  • ISNUMERIC(@text) = 1 vérifie si la chaîne peut être convertie en entier.
  • Si la conversion réussit, la fonction CAST convertit @text en entier.
  • Si la conversion échoue, la valeur par défaut spécifiée est renvoyé à la place.

Exemple

Considérons l'exemple suivant :

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, la conversion est réussie, et 100 sont retournés. Dans le second cas, la chaîne « XXX » ne peut pas être convertie et NULL est renvoyé comme valeur par défaut.

Gestion des limitations d'ISNUMERIC()

Il convient de noter que ISNUMERIC() peut renvoyer true pour certaines chaînes qui ne sont pas des entiers valides, telles que celles contenant des symboles monétaires, des points décimaux ou des signes /-. Il est donc conseillé de valider la chaîne de manière plus approfondie avant de la lancer.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn