Heim >Datenbank >MySQL-Tutorial >Wie konvertiert man effizient eine durch Kommas getrennte Zeichenfolge in eine SQL-IN-Liste?
Konvertieren Sie eine durch Kommas getrennte Zeichenfolge in eine IN-Liste in der SQL-WHERE-Klausel
Frage:
Wenn Sie eine durch Kommas getrennte Zeichenfolge als Parameter in einer gespeicherten Prozedur speichern, besteht die Aufgabe darin, sie in der WHERE-Klausel in die richtige IN-Liste umzuwandeln.
Best-Practice-Lösungen:
Um diese Konvertierung effizient durchzuführen, erstellen Sie eine benutzerdefinierte SQL Server-Funktion:
<code class="language-sql">CREATE function [dbo].[f_split] ( @param nvarchar(max), @delimiter char(1) ) returns @t table (val nvarchar(max), seq int) as begin set @param += @delimiter ;with a as ( select cast(1 as bigint) f, charindex(@delimiter, @param) t, 1 seq union all select t + 1, charindex(@delimiter, @param, t + 1), seq + 1 from a where charindex(@delimiter, @param, t + 1) > 0 ) insert @t select substring(@param, f, t - f), seq from a option (maxrecursion 0) return end</code>
Verwendung:
Füllen Sie die WHERE-Klausel mit der folgenden Anweisung:
<code class="language-sql">SELECT * FROM yourtable WHERE account in (SELECT val FROM dbo.f_split(@account, ','))</code>
Leistungsvergleich:
Diese Funktion bietet eine höhere Leistung im Vergleich zu XML-basierten Segmentierungsmethoden. Verwenden Sie einen großen Testdatensatz:
Leistungsunterschiede können variieren, was die Effizienz benutzerdefinierter Split-Funktionen unterstreicht.
Das obige ist der detaillierte Inhalt vonWie konvertiert man effizient eine durch Kommas getrennte Zeichenfolge in eine SQL-IN-Liste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!