Maison > base de données > tutoriel mysql > Comment master..spt_values ​​peut-il être utilisé pour une division efficace des colonnes dans SQL Server ?

Comment master..spt_values ​​peut-il être utilisé pour une division efficace des colonnes dans SQL Server ?

DDD
Libérer: 2025-01-01 04:12:09
original
691 Les gens l'ont consulté

How Can master..spt_values Be Used for Efficient Column Splitting in SQL Server?

Pourquoi et comment utiliser master..spt_values ​​pour le fractionnement de colonnes

Objectif de master..spt_values

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.

Understanding Type = 'P'

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.

Exploiter les valeurs spt_values ​​pour la division des colonnes

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
Copier après la connexion

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.

Avantages de l'utilisation de spt_values ​​pour le fractionnement des colonnes

Emploi de master. .spt_values ​​pour le fractionnement des colonnes en propose plusieurs avantages :

  • Efficacité : En utilisant la table et la séquence de nombres existantes, la requête évite la surcharge liée à la création et au remplissage de tables temporaires.
  • Flexibilité : La table de projection offre une large gamme de nombres, permettant diverses opérations de fractionnement sur des colonnes de différents longueurs.
  • Compatibilité : master..spt_values ​​est une table système intégrée et donc universellement disponible dans les installations SQL Server, garantissant la compatibilité et la fiabilité.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal