Verarbeitung von IN-Klauseln mithilfe von IN-Klauseln zum Deklarieren von Variablen in SQL Server
Das Einfügen mehrerer Werte in eine IN-Klausel mithilfe deklarierter Variablen kann zu Fehlern führen, insbesondere wenn die Variable nicht numerische Zeichen enthält. Lassen Sie uns dieses Problem untersuchen und eine Lösung besprechen.
Fehler verstehen
In der angegebenen SQL-Anweisung:
<code class="language-sql">DECLARE @ExcludedList VARCHAR(MAX) SET @ExcludedList = 3 + ', ' + 4 + ' ,' + '22' SELECT * FROM A WHERE Id NOT IN (@ExcludedList)</code>
Die Fehlermeldung weist darauf hin, dass die Konvertierung von einem VARCHAR-Wert, der Kommas und Leerzeichen enthält, in eine Ganzzahl (INT) fehlgeschlagen ist. Dies liegt daran, dass die IN-Klausel einen Bereich numerischer Werte erwartet und Kommas und Leerzeichen nicht als gültige Ganzzahlen erkannt werden.
Verwenden Sie Tabellenvariablen, um dynamische Listen zu verarbeiten
Eine Möglichkeit, diese Einschränkung zu überwinden, besteht darin, eine Tabellenvariable zum Speichern der Werteliste für die IN-Klausel zu verwenden. Dies ermöglicht es uns, mehrere Werte in eine Tabellenvariable einzufügen und sie als eine einzelne Entität zu behandeln.
Tabellenvariablen erstellen und füllen
Deklarieren Sie eine Tabellenvariable, um die Liste der ausgeschlossenen Werte darzustellen:
<code class="language-sql">DECLARE @ExcludedList TABLE (Id INT)</code>
Fügen Sie Werte mithilfe einer Schleife oder einer anderen geeigneten Methode in Tabellenvariablen ein:
<code class="language-sql">INSERT INTO @ExcludedList VALUES (3) INSERT INTO @ExcludedList VALUES (4) INSERT INTO @ExcludedList VALUES (22)</code>
Verwenden Sie Tabellenvariablen in der IN-Klausel
IN-Klauseln können jetzt auf Tabellenvariablen verweisen, die automatisch die Konvertierung ihrer Werte in Ganzzahlen durchführen:
<code class="language-sql">SELECT * FROM A WHERE Id NOT IN (SELECT Id FROM @ExcludedList)</code>
Diese geänderte Anweisung gibt Zeilen aus Tabelle A zurück, die nicht in der Ausschlussliste enthalten sind, und vermeidet so Konvertierungsfehler.
Das obige ist der detaillierte Inhalt vonWie kann ich deklarierte Variablen mit IN-Klauseln in SQL Server effektiv verwenden, um Konvertierungsfehler zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!