Master..spt_values 是Microsoft SQL Server 中的系統表,包含系統儲存過程所使用的各種查找和投影表。它透過提供預先定義的數字、位元遮罩和其他常用值序列來實現高效的資料操作。
查找表允許將數值擴展為其對應的字串表示形式,例如將鎖定類型從數字轉換為名稱。另一方面,投影表提供了一種迭代一系列值的方法,這對於將列拆分為多行非常有用。
在master中輸入「P」..spt_values表示一個投影表。 它包含從0到2047的連續數字序列。此表可以有效地透過各種操作(例如計數或聚合)投影一組值。
使用master..spt_values 的好處(輸入「P」)用於分割CSV列在於它的性能和效率。透過利用預先計算的數字序列,SQL Server 可以避免建立和插入臨時表,如果序列是動態產生的,則這是必要的。這可以顯著提高執行列拆分操作的查詢的執行速度。
相關程式碼示範如何使用master..spt_values 將CSV 欄位拆分為多行:
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
此程式碼利用master..spt_values 中的類型「P」表來建立一個數字序列, соответствует CSV 列(col4) 中的每個字元。然後,它使用這些數字根據逗號分隔符號將列拆分為行。
以上是master..spt_values如何在SQL Server中有效率地分割逗號分隔值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!