Le langage de requête structuré (SQL) est un langage de programmation utilisé pour stocker et traiter des données dans des bases de données relationnelles. Une base de données relationnelle est une base de données tabulaire qui stocke des informations sous forme de tableau, avec des lignes et des colonnes représentant différents attributs de données et les différentes relations entre les valeurs de données. Les instructions SQL peuvent être utilisées pour stocker, mettre à jour, supprimer, rechercher et récupérer des données d’une base de données. SQL peut également être utilisé pour maintenir et améliorer les performances de la base de données. SQL est la norme de l’industrie pour travailler avec des bases de données relationnelles. SQL peut être utilisé pour insérer, rechercher, mettre à jour et supprimer des enregistrements dans une base de données. SQL peut effectuer diverses autres tâches, notamment l’optimisation et la maintenance de la base de données. Cet article explique comment éviter l’erreur de « division par zéro » dans SQL.

Le langage de requête structuré (SQL) est un langage de requête populaire utilisé dans un large éventail d’applications. SQL est appris et utilisé par les analystes de données et les développeurs car il s’intègre bien avec divers langages de programmation. Par exemple, ils peuvent utiliser le langage de programmation Java pour intégrer des requêtes SQL afin de créer des applications de traitement de données hautes performances avec les principaux systèmes de bases de données SQL tels qu’Oracle ou MS SQL Server. SQL est également relativement simple à apprendre car ses instructions utilisent des mots-clés anglais courants.

Vous obtenez l’erreur « SQL Server Divide By Zero Erreur rencontrée » ? Nous pouvons vous aider. Un de nos clients a récemment rencontré cette erreur car il est impossible de diviser un nombre par zéro. Cela continue indéfiniment. Pour diverses raisons, nous effectuons des calculs de données dans SQL Server. Nous devons nous rappeler de gérer une erreur de « division par zéro » chaque fois que nous effectuons une division en SQL. Même s’il n’y a pas de données dans le dénominateur avec la valeur zéro, nous devons gérer l’erreur”diviser par zéro”pour le moment car il peut y avoir des données avec la valeur zéro à l’avenir. Nous pouvons résoudre ce problème en remplaçant zéro par NULL. Ci-dessous, nous avons mentionné les étapes pour traiter l’erreur”diviser par zéro”dans SQL.

5 façons d’éviter l’erreur”diviser par zéro”en SQL

L’instruction SET ARITHIGNORE

L’instruction SET ARITHIGNORE contrôle si des messages d’erreur sont renvoyés à partir d’erreurs de dépassement ou de division par zéro lors d’une requête :

SET ARITHABORT OFF ;SET ANSI_WARNINGS OFF ;

SET ARITHIGNORE ON ;SELECT 1/0 AS Result_1 ;

SET ARITHIGNORE OFF;SELECT 1/0 AS Result_2;

Nous définissons ARITHABORT et ANSI WARNINGS sur OFF pour empêcher l’abandon de l’instruction à la suite de l’erreur, et NULL est renvoyé chaque fois qu’une erreur de division par zéro se produit. Il convient de noter que le paramètre SET ARITHIGNORE affecte uniquement si un message d’erreur est renvoyé. Indépendamment de ce paramètre, SQL Server renvoie une valeur NULL dans un calcul impliquant un débordement ou une erreur de division par zéro. L’erreur de division par zéro n’est pas renvoyée lorsque ARITHIGNORE est activé, comme illustré dans l’exemple précédent. Lorsqu’il est désactivé, le message d’erreur de division par zéro s’affiche.

L’instruction SET ARITHABORT

Lorsqu’un débordement ou une erreur de division par zéro se produit pendant l’exécution de la requête, l’instruction SET L’instruction ARITHABORT termine la requête. Nous pouvons le combiner avec SET ANSI WARNINGS pour renvoyer NULL chaque fois qu’une erreur de division par zéro se produit:

SET ARITHABORT OFF;SET ANSI_WARNINGS OFF;SELECT 20/0;

Microsoft vous recommande de toujours laisser ARITHABORT activé dans vos sessions de connexion, et que le désactiver peut avoir un impact négatif sur l’optimisation des requêtes, entraînant des problèmes de performances.

ARITHABORT est activé par défaut dans certains clients (tels que SQL Server Management Studio). C’est pourquoi il est peu probable que vous voyiez la valeur NULL renvoyée lors de la division par zéro. Si vous préférez, vous pouvez modifier ce comportement avec SET ARITHIGNORE.

Utilisez une instruction CASE

Une autre façon de procéder consiste à utiliser une instruction CASE :

DECLARE @n1 INT=20;DECLARE @n2 INT=0;

SELECT CASEWHEN @n2=0THEN NULLELSE @n1/@n2END

Ajouter la fonction ISNULL()

Dans certains cas, vous préférerez peut-être renvoyer une valeur autre que NULL. Dans ce cas, vous pouvez passer l’exemple précédent à la fonction ISNULL():

SELECT ISNULL(1/NULLIF( 0, 0 ), 0);

Nous avons spécifié que si le résultat est NULL, zéro doit être renvoyé. Mais soyez prudent. Retourner zéro peut être inapproprié dans certains cas. Si vous avez affaire à des stocks, par exemple, spécifier zéro peut impliquer qu’il n’y a pas de produits, ce qui peut ne pas être le cas.

L’expression NULLIF()

Un rapide et un moyen simple de gérer cette erreur consiste à utiliser l’expression NULLIF():

SELECT 1/NULLIF( 0, 0 );

Si les deux expressions spécifiées ont la même valeur, NULLIF() renvoie NULL. Si les deux expressions diffèrent, il renvoie la première. Par conséquent, si nous utilisons zéro comme deuxième expression, nous obtiendrons toujours une valeur nulle si la première expression est zéro. Le résultat de la division d’un nombre par NULL est NULL.

En fait, SQL Server renvoie NULL sur une erreur de division par zéro, mais nous ne le voyons pas dans la plupart des cas à cause de nos AVERTISSEMENTS ARITHABORT et ANSI settings.

Derniers mots

Nous concluons donc ici notre article sur les méthodes pour éviter l’erreur”diviser par zéro”en SQL. Structured Query Language (SQL) est un langage de programmation utilisé pour gérer des bases de données relationnelles et effectuer diverses opérations sur les données qu’elles contiennent. SQL, qui a été développé dans les années 1970, est désormais largement utilisé non seulement par les administrateurs de bases de données, mais également par les développeurs écrivant des scripts d’intégration de données et les analystes de données cherchant à configurer et exécuter des requêtes analytiques.

J’espère que vous comprenez ceci article, Comment éviter l’erreur de division par zéro dans SQL.

James Hogan est rédacteur senior chez”TNGD”, où il a couvert divers sujets, notamment les ordinateurs portables, les équipements de jeu, les claviers, le stockage, etc. Au cours de cette période, ils ont évalué des centaines d’ordinateurs portables et des milliers d’accessoires et ont construit une collection de trop nombreux claviers mécaniques pour leur propre usage.

Afficher tous les messages

By Henry Taylor

Je travaille en tant que développeur back-end. Certains d'entre vous m'ont peut-être vu à la conférence des développeurs. Dernièrement, j'ai travaillé sur un projet open source.