Rumah > pangkalan data > tutorial mysql > Bagaimanakah boleh menguasai..spt_values ​​Membahagikan Nilai Dipisahkan Koma dengan Cekap dalam Pelayan SQL?

Bagaimanakah boleh menguasai..spt_values ​​Membahagikan Nilai Dipisahkan Koma dengan Cekap dalam Pelayan SQL?

Susan Sarandon
Lepaskan: 2024-12-30 14:20:11
asal
647 orang telah melayarinya

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

Memisahkan Lajur dengan master..spt_values

Latar Belakang: Carian Jadual dan Unjuran

Master..spt_values ​​ialah jadual sistem dalam Microsoft SQL Server yang mengandungi pelbagai jadual carian dan unjuran yang digunakan oleh prosedur tersimpan sistem. Ia membolehkan manipulasi data yang cekap dengan menyediakan urutan nombor yang telah ditetapkan, bitmasks dan nilai lain yang lazim diperlukan.

Jadual carian membenarkan untuk mengembangkan nilai berangka kepada perwakilan rentetan yang sepadan, seperti menukar jenis kunci daripada nombor kepada nama . Sebaliknya, jadual unjuran menyediakan cara untuk lelaran melalui julat nilai, yang berguna untuk memisahkan lajur kepada berbilang baris.

Jenis = "P": Jadual Unjuran

Taip "P" dalam master..spt_values ​​menandakan jadual unjuran. Ia mengandungi jujukan nombor berturut-turut daripada 0 hingga 2047. Jadual ini membolehkan unjuran yang cekap bagi satu set nilai melalui pelbagai operasi, seperti pengiraan atau pengagregatan.

Faedah Menggunakan Jenis "P" untuk Pemisahan Lajur

faedah menggunakan master..spt_values ​​(Jenis "P") untuk membelah lajur CSV terletak pada prestasi dan kecekapannya. Dengan memanfaatkan jujukan nombor yang telah dikira sebelumnya, SQL Server boleh mengelak daripada mencipta dan memasukkan ke dalam jadual sementara, yang diperlukan jika jujukan itu dijana secara dinamik. Ini boleh meningkatkan dengan ketara kelajuan pelaksanaan pertanyaan yang melaksanakan operasi pemisahan lajur.

Contoh Kod

Kod yang dipersoalkan menunjukkan cara membahagi lajur CSV kepada berbilang baris menggunakan 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
Salin selepas log masuk

Kod ini memanfaatkan jadual Jenis "P" dalam master..spt_values ​​untuk mencipta jujukan daripada nombor yang menyokong setiap aksara dalam lajur CSV (col4). Ia kemudian menggunakan nombor ini untuk membahagikan lajur kepada baris berdasarkan pembatas koma.

Atas ialah kandungan terperinci Bagaimanakah boleh menguasai..spt_values ​​Membahagikan Nilai Dipisahkan Koma dengan Cekap dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan