儘管其未記錄狀態master..spt_values 是一個有價值的表,它使Microsoft SQL Server中的系統過程能夠有效地執行各種功能。它包含這些系統過程所使用的參考表和投影資料的集合,包括資料類型、角色和其他元資料的查找值。
Type = 'P' 表示 master..spt_values 中的投影表。此表提供了從 0 到 2047 的連續數字序列,可用於對資料執行投影或遍歷。
master..spt_values 中儲存的原始資料不適合使用者查詢直接使用。但是,它的投影功能對於在單列中拆分資料特別有用。
想像一個表,其中一列包含以逗號分隔的值列表,例如「1,2,3」。要將此列轉換為多行,您可以使用spt_values,如下所示:
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
在這種情況下,查詢會迭代spt_values 表(Type = 'P')並使用數字序列來指導分割操作。它有效地隔離了逗號分隔清單中的每個值,從而在結果集中創建了不同的行。
使用 master。 .spt_values 用於列分割提供了幾個優點:
以上是如何使用 master..spt_values 在 SQL Server 中進行高效率的列拆分?的詳細內容。更多資訊請關注PHP中文網其他相關文章!