Heim > Datenbank > MySQL-Tutorial > Wie kann master..spt_values ​​durch Kommas getrennte Werte in SQL Server effizient aufteilen?

Wie kann master..spt_values ​​durch Kommas getrennte Werte in SQL Server effizient aufteilen?

Susan Sarandon
Freigeben: 2024-12-30 14:20:11
Original
586 Leute haben es durchsucht

How Can master..spt_values Efficiently Split Comma-Separated Values in SQL Server?

Spalten aufteilen mit master..spt_values

Hintergrund: Nachschlagetabellen und Projektionen

Master..spt_values ​​ist eine Systemtabelle in Microsoft SQL Server, die enthält verschiedene Nachschlage- und Projektionstabellen, die von gespeicherten Systemprozeduren verwendet werden. Es ermöglicht eine effiziente Datenbearbeitung durch die Bereitstellung vordefinierter Zahlenfolgen, Bitmasken und anderer häufig benötigter Werte.

Nachschlagetabellen ermöglichen die Erweiterung numerischer Werte auf ihre entsprechenden Zeichenfolgendarstellungen, beispielsweise die Konvertierung von Sperrtypen von Zahlen in Namen . Andererseits bieten Projektionstabellen eine Möglichkeit, einen Wertebereich zu durchlaufen, was zum Aufteilen von Spalten in mehrere Zeilen nützlich ist.

Typ = „P“: Projektionstabelle

Typ „P“ in Master..spt_values ​​bezeichnet eine Projektionstabelle. Sie enthält eine Folge aufeinanderfolgender Zahlen von 0 bis 2047. Diese Tabelle ermöglicht die effiziente Projektion B. Zählen oder Aggregation.

Vorteile der Verwendung von Typ „P“ für die Spaltenaufteilung

Der Vorteil der Verwendung von master..spt_values ​​(Typ „P“) zum Teilen einer CSV-Spalte liegt in seiner Leistung und Effizienz. Durch die Nutzung der vorberechneten Zahlenfolge kann SQL Server das Erstellen und Einfügen in eine temporäre Tabelle vermeiden, was bei einer dynamischen Generierung der Zahlenfolge erforderlich wäre. Dies kann die Ausführungsgeschwindigkeit von Abfragen, die Spaltenaufteilungsvorgänge durchführen, erheblich verbessern.

Codebeispiel

Der betreffende Code zeigt, wie eine CSV-Spalte mithilfe von master..spt_values:

SELECT
    T.col1, RIGHT(LEFT(T.col4,Number-1),
    CHARINDEX(',',REVERSE(LEFT(','+T.col4,Number-1))))
FROM
    master..spt_values,
    table1 T
WHERE
    Type = 'P' AND Number BETWEEN 1 AND LEN(T.col4)+1 AND
    (SUBSTRING(T.col4,Number,1) = ','
    -- OR SUBSTRING(T.col4,Number,1)  = '') --this does not work correctly anyway
Nach dem Login kopieren
Dieser Code nutzt die Tabelle vom Typ „P“ in master..spt_values, um eine Zahlenfolge zu erstellen vergleicht jedes Zeichen in der CSV-Spalte (col4). Anschließend werden diese Zahlen verwendet, um die Spalte basierend auf dem Komma-Trennzeichen in Zeilen aufzuteilen.

Das obige ist der detaillierte Inhalt vonWie kann master..spt_values ​​durch Kommas getrennte Werte in SQL Server effizient aufteilen?. 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