尽管其未记录状态 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中文网其他相关文章!