Malgré son caractère sans papiers status, master..spt_values est une table précieuse qui permet aux procédures système de Microsoft SQL Server d'exécuter efficacement diverses fonctions. Il contient une collection de tables de référence et de données de projection utilisées par ces procédures système, y compris des valeurs de recherche pour les types de données, les rôles et d'autres métadonnées.
Type = 'P' signifie la table de projection dans master..spt_values. Ce tableau fournit une séquence consécutive de nombres, de 0 à 2 047, qui peuvent être utilisés pour effectuer des projections ou des parcours à travers les données.
Les données brutes stockées dans master..spt_values ne sont pas destinées à être utilisées directement par les requêtes des utilisateurs. Cependant, ses capacités de projection sont particulièrement utiles pour diviser les données au sein d'une seule colonne.
Imaginez un tableau dans lequel une colonne contient une liste de valeurs séparées par des virgules, telles que « 1,2,3 ». Pour transformer cette colonne en plusieurs lignes, vous pouvez utiliser spt_values comme suit :
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
Dans ce scénario, la requête parcourt la table spt_values (Type = 'P') et utilise la séquence de nombres pour guider le opération fractionnée. Il isole efficacement chaque valeur dans la liste séparée par des virgules, créant ainsi des lignes distinctes dans l'ensemble de résultats.
Emploi de master. .spt_values pour le fractionnement des colonnes en propose plusieurs avantages :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!