Heim > Datenbank > MySQL-Tutorial > Wie übergebe ich durch Kommas getrennte Werte effizient an eine SQL Server-IN-Funktion?

Wie übergebe ich durch Kommas getrennte Werte effizient an eine SQL Server-IN-Funktion?

Mary-Kate Olsen
Freigeben: 2025-01-22 04:25:09
Original
561 Leute haben es durchsucht

How to Efficiently Pass Comma-Delimited Values to a SQL Server IN Function?

Übergeben Sie getrennte Werte an die SQL Server IN-Funktion

Die Übergabe von durch Kommas getrennten Zeichenfolgenwerten an die IN-Funktion in SQL Server kann eine Herausforderung sein. Die direkte Verwendung der IN-Funktion, die durch Trennzeichen getrennte Zeichenfolgen enthält, führt zu Konvertierungsfehlern.

Option 1: Dynamisches SQL

Eine Möglichkeit ist die Verwendung von dynamischem SQL, mit dem Sie IN-Klauseln dynamisch erstellen können. Diese Methode wird jedoch aus Sicherheits- und Leistungsgründen nicht empfohlen.

Option 2: String-Operation

Eine effizientere und sicherere Lösung besteht darin, die durch Trennzeichen getrennte Zeichenfolge in ein für die IN-Funktion akzeptables Format zu manipulieren. Eine Möglichkeit besteht darin, mit der Funktion CHARINDEX() zu prüfen, ob jeder Wert in der durch Trennzeichen getrennten Zeichenfolge mit einem Spaltenwert in der Tabelle übereinstimmt:

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

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

Diese Methode erfordert kein dynamisches SQL, wodurch Sicherheits- und Leistungsvorteile in Einklang gebracht werden.

Einfache Lösung

Für diejenigen, die eine weniger elegante, aber bequemere Lösung suchen, gibt es einen einfachen Trick:

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

SELECT * 
FROM sometable
WHERE ',' + CONVERT(VARCHAR, tableid) + ',' LIKE '%,' + @Ids + '%';</code>
Nach dem Login kopieren

Obwohl diese Methode nicht so effizient ist wie die CHARINDEX()-Methode, bietet sie eine schnelle und einfache Alternative.

Das obige ist der detaillierte Inhalt vonWie übergebe ich durch Kommas getrennte Werte effizient an eine SQL Server-IN-Funktion?. 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