Maison > base de données > tutoriel mysql > Comment puis-je convertir en toute sécurité des chaînes NVARCHAR en entiers dans T-SQL, en gérant des valeurs non numériques ?

Comment puis-je convertir en toute sécurité des chaînes NVARCHAR en entiers dans T-SQL, en gérant des valeurs non numériques ?

DDD
Libérer: 2024-12-28 08:12:13
original
602 Les gens l'ont consulté

How Can I Safely Cast NVARCHAR Strings to Integers in T-SQL, Handling Non-Numeric Values?

Conversion T-SQL : conversion de chaînes en entiers avec une valeur par défaut ou une gestion NULL

Dans T-SQL, la conversion de chaînes nvarchar en entiers est cruciale pour la manipulation des données. Cependant, lorsque vous rencontrez des caractères non numériques, ces conversions peuvent échouer. Cela soulève la nécessité de gérer les erreurs de conversion avec élégance.

Solution

L'expression CASE WHEN fournit un mécanisme robuste pour gérer ce scénario. La syntaxe est la suivante :

CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
Copier après la connexion

Voici comment cela fonctionne :

  • ISNUMERIC() : Cette fonction évalue si la chaîne nvarchar @text représente un valeur numérique valide. S'il renvoie 1 (vrai), la chaîne est numérique.
  • CAST() : Si ISNUMERIC() renvoie vrai, la chaîne est convertie en un entier à l'aide de CAST(). Sinon, le résultat est défini sur NULL.

Cette approche garantit que si la conversion de chaîne en entier réussit, la valeur entière correcte est renvoyée. Cependant, si la conversion échoue en raison de caractères non numériques, une valeur NULL est renvoyée.

Exemple de code

DECLARE @text AS NVARCHAR(10)

-- Numeric string
SET @text = '100'
SELECT @text, CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END

-- Non-numeric string
SET @text = 'XXX'
SELECT @text, CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
Copier après la connexion

Limitations

Alors que la fonction ISNUMERIC() propose un moyen pratique de vérifier les valeurs numériques, il est important d'être conscient de ses limites :

  • Il renvoie vrai pour les chaînes contenant des symboles monétaires ($), des séparateurs décimaux (,), des séparateurs de milliers (.) et des signes arithmétiques ( et -).
  • Il ne fait pas de distinction entre les entiers et les autres types de données numériques, tels que décimales.

Malgré ces limitations, CASE WHEN avec ISNUMERIC() et CAST() fournit une solution pratique pour convertir des chaînes en entiers et gestion des cas non numériques en T-SQL.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal