Walaupun statusnya yang tidak didokumenkan, master..spt_values ialah jadual berharga yang membolehkan prosedur sistem dalam Microsoft SQL Server melaksanakan pelbagai fungsi dengan berkesan. Ia mengandungi koleksi jadual rujukan dan data unjuran yang digunakan oleh prosedur sistem ini, termasuk nilai carian untuk jenis data, peranan dan metadata lain.
Type = 'P' menandakan jadual Unjuran dalam master..spt_values. Jadual ini menyediakan urutan nombor berturut-turut, dari 0 hingga 2047, yang boleh digunakan untuk melakukan unjuran atau traversal melalui data.
Data mentah yang disimpan dalam master..spt_values tidak bertujuan untuk kegunaan langsung oleh pengguna pertanyaan. Walau bagaimanapun, keupayaan unjurannya amat berguna untuk memisahkan data dalam satu lajur.
Bayangkan jadual di mana satu lajur mengandungi senarai nilai yang dipisahkan koma, seperti '1,2,3'. Untuk mengubah lajur ini kepada berbilang baris, anda boleh menggunakan spt_values seperti berikut:
SELECT 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
Dalam senario ini, pertanyaan akan berulang melalui jadual spt_values (Jenis = 'P') dan menggunakan urutan nombor untuk membimbing operasi berpecah. Ia mengasingkan setiap nilai dengan berkesan dalam senarai yang dipisahkan koma, mencipta baris yang berbeza dalam set hasil.
Menggunakan master. .spt_values untuk pemisahan lajur menawarkan beberapa kelebihan:
Atas ialah kandungan terperinci Bagaimanakah master..spt_values Boleh Digunakan untuk Pemisahan Lajur yang Cekap dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!