Heim > Datenbank > MySQL-Tutorial > Wie übergebe ich durch Kommas getrennte Werte an die IN-Funktion von SQL Server ohne dynamisches SQL?

Wie übergebe ich durch Kommas getrennte Werte an die IN-Funktion von SQL Server ohne dynamisches SQL?

Susan Sarandon
Freigeben: 2025-01-22 03:56:11
Original
258 Leute haben es durchsucht

How to Pass Comma-Delimited Values to SQL Server's IN Function Without Dynamic SQL?

Dynamisches SQL vermeiden: Durch Kommas getrennte Werte an die IN-Klausel von SQL Server übergeben

Die direkte Übergabe von durch Kommas getrennten Zeichenfolgen an die IN-Funktion von SQL Server führt häufig zu Typkonvertierungsfehlern. Zum Beispiel:

<code class="language-sql">DECLARE @Ids varchar(50);
SET @Ids = '1,2,3,5,4,6,7,98,234';

SELECT * FROM sometable
WHERE tableid IN (@Ids);</code>
Nach dem Login kopieren

Dies führt zu einem Fehler „Konvertierung fehlgeschlagen“, da die IN-Klausel einzelne Ganzzahlwerte und keine Zeichenfolge erwartet.

Eine dynamische SQL-freie Lösung

Eine robuste Alternative, die die Fallstricke von dynamischem SQL vermeidet, besteht in der Nutzung der CHARINDEX-Funktion:

<code class="language-sql">DECLARE @Ids varchar(50);
SET @Ids = ',1,2,3,5,4,6,7,98,234,'; -- Note the leading and trailing commas

SELECT * FROM sometable
WHERE CHARINDEX(',' + CAST(tableid AS VARCHAR(8000)) + ',', @Ids) > 0;</code>
Nach dem Login kopieren

Durch das Hinzufügen von Kommas vor und nach sowohl der Eingabezeichenfolge @Ids als auch der Umwandlung tableid stellen wir sicher, dass jeder einzelne Wert innerhalb der durch Kommas getrennten Zeichenfolge korrekt identifiziert wird. Die CHARINDEX-Funktion prüft dann effizient, ob jedes tableid in der geänderten @Ids-Zeichenfolge vorhanden ist. Dadurch wird das Verhalten der IN-Klausel effektiv nachgeahmt, ohne dass dynamisches SQL erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie übergebe ich durch Kommas getrennte Werte an die IN-Funktion von SQL Server ohne dynamisches SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage