Ü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>
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>
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!