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中文网其他相关文章!