Rumah >pangkalan data >tutorial mysql >Bagaimanakah boleh menguasai..spt_values Membahagikan Nilai Dipisahkan Koma dengan Cekap dalam Pelayan SQL?
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.
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 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.
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
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!