Heim >Datenbank >MySQL-Tutorial >Wie konvertiert man effizient eine durch Kommas getrennte Zeichenfolge in eine SQL-IN-Liste?

Wie konvertiert man effizient eine durch Kommas getrennte Zeichenfolge in eine SQL-IN-Liste?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-09 14:26:45349Durchsuche

How to Efficiently Convert a Comma-Separated String to an SQL IN List?

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:

  • XML-Aufteilungszeit: 1 Minute und 21 Sekunden
  • f_split-Funktion dauert 43 Sekunden

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!

Stellungnahme:
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