Maison > base de données > tutoriel mysql > Comment puis-je utiliser efficacement les variables déclarées avec les clauses IN dans SQL Server pour éviter les erreurs de conversion ?

Comment puis-je utiliser efficacement les variables déclarées avec les clauses IN dans SQL Server pour éviter les erreurs de conversion ?

Mary-Kate Olsen
Libérer: 2025-01-09 20:26:42
original
787 Les gens l'ont consulté

How Can I Effectively Use Declared Variables with IN Clauses in SQL Server to Avoid Conversion Errors?

Gestion des clauses IN à l'aide de clauses IN déclarant des variables dans SQL Server

L'insertion de plusieurs valeurs dans une clause IN à l'aide de variables déclarées peut rencontrer des erreurs, surtout si la variable contient des caractères non numériques. Explorons ce problème et discutons d'une solution.

Erreur de compréhension

Dans l'instruction SQL donnée :

<code class="language-sql">DECLARE @ExcludedList VARCHAR(MAX)

SET @ExcludedList = 3 + ', ' + 4 + ' ,' + '22'

SELECT * FROM A WHERE Id NOT IN (@ExcludedList)</code>
Copier après la connexion

Le message d'erreur indique que la conversion d'une valeur VARCHAR contenant des virgules et des espaces en un entier (INT) a échoué. En effet, la clause IN attend une plage de valeurs numériques et les virgules et les espaces ne sont pas reconnus comme des entiers valides.

Utiliser des variables de table pour traiter des listes dynamiques

Une façon de surmonter cette limitation consiste à utiliser une variable de table pour stocker la liste des valeurs de la clause IN. Cela nous permet d'insérer plusieurs valeurs dans une variable de table et de la traiter comme une seule entité.

Créer et remplir des variables de tableau

Déclarez une variable de table pour représenter la liste des valeurs exclues :

<code class="language-sql">DECLARE @ExcludedList TABLE (Id INT)</code>
Copier après la connexion

Insérer des valeurs dans des variables de tableau à l'aide d'une boucle ou de toute autre méthode appropriée :

<code class="language-sql">INSERT INTO @ExcludedList VALUES (3)
INSERT INTO @ExcludedList VALUES (4)
INSERT INTO @ExcludedList VALUES (22)</code>
Copier après la connexion

Utiliser les variables de table dans la clause IN

Les clauses IN peuvent désormais référencer des variables de table, qui géreront automatiquement la conversion de leurs valeurs en entiers :

<code class="language-sql">SELECT * FROM A WHERE Id NOT IN (SELECT Id FROM @ExcludedList)</code>
Copier après la connexion

Cette instruction modifiée renverra les lignes du tableau A qui ne figurent pas dans la liste d'exclusion, évitant ainsi les erreurs de 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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal