Heim > Datenbank > MySQL-Tutorial > Wie kann ich durch Kommas getrennte Zeichenfolgen für SQL IN-Listen effizient analysieren?

Wie kann ich durch Kommas getrennte Zeichenfolgen für SQL IN-Listen effizient analysieren?

Barbara Streisand
Freigeben: 2025-01-09 14:21:41
Original
593 Leute haben es durchsucht

How to Efficiently Parse Comma-Separated Strings for SQL IN Lists?

Komma-getrennte Zeichenfolge in die IN-Liste in der SQL-WHERE-Klausel analysieren

Angenommen, die gespeicherte Prozedur empfängt einen durch Kommas getrennten Zeichenfolgenparameter, der mehrere Werte darstellt, z. B. Benutzername oder Kontonummer. Um Zeilen basierend auf diesen Werten zu filtern, müssen wir in der WHERE-Klausel eine IN-Liste erstellen.

Der empfohlene Ansatz in SQL Server 2005 und höher ist die Verwendung von Tabellenwertfunktionen, zum Beispiel:

<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) AS f, CHARINDEX(@delimiter, @param) AS t, 1 AS 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>
Nach dem Login kopieren

Um diese Funktion zum Parsen einer Zeichenfolge in eine Liste von INs zu verwenden, erstellen Sie eine Unterabfrage:

<code class="language-sql">SELECT *
FROM yourtable 
WHERE account IN (SELECT val FROM dbo.f_split(@account, ','))</code>
Nach dem Login kopieren

Alternativ können Sie eine einfache, aber weniger effiziente Methode des Mustervergleichs mit dem LIKE-Operator verwenden:

<code class="language-sql">WHERE account LIKE '%,' + @account + '%,</code>
Nach dem Login kopieren

Im Gegensatz dazu kann die Verwendung der f_split-Funktion eine bessere Leistung bieten, insbesondere beim Umgang mit großen Datenmengen.

Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennte Zeichenfolgen für SQL IN-Listen effizient analysieren?. 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