Liste de toutes les colonnes SQL avec max la longueur ET la plus grande longueur
Je suis en train d'essayer d'obtenir une liste de toutes les colonnes d'une table avec leurs types de données, les longueurs de données et la longueur de la plus grande valeur dans cette colonne.
J'ai cette SQL pour obtenir les colonnes et les types de données et longueurs:
SELECT
Object_Name(c.object_id),
c.name 'Column Name',
t.Name 'Data type',
c.max_length 'Max Length'
FROM
sys.columns c
INNER JOIN
sys.types t ON c.system_type_id = t.system_type_id
WHERE
c.object_id = OBJECT_ID('MyTable')
Et j'ai cette SQL pour obtenir la longueur maximale d'une valeur
SELECT Max(Len(MyColumn))
FROM MyTable
Mais je ne peux pas comprendre comment les combiner.
Je suis en utilisant MSSQL 2008.
Ce type de DB utilisez-vous?
Ce SGBD vous utilisez?
SQL est un langage standard partagé par plusieurs produits de base de données. Si vous vous posez à propos de SQL Server, veuillez ajouter que, en tant que distincte de la balise.
Ce SGBD vous utilisez?
SQL Server
? MySQL
? Oracle
? DB2
? etc..SQL est un langage standard partagé par plusieurs produits de base de données. Si vous vous posez à propos de SQL Server, veuillez ajouter que, en tant que distincte de la balise.
OriginalL'auteur CeejeeB | 2013-01-23
Vous devez vous connecter pour publier un commentaire.
Merci pour les suggestions. Je suis venu avec la solution suivante. Il me récupère les données dont j'ai besoin, mais serait curieux de voir si elle peut être rendue plus efficace.
De toute façon pour obtenir un max de valeur numérique de l'ensemble de colonnes?
Pour les lecteurs intéressés, ce post les détails du code pour des fonctionnalités similaires qui ne nécessite pas l'utilisation de curseurs.
Grand code fonctionne mieux avec une table temporaire plutôt qu'une variable de table que vous pouvez avoir besoin d'interroger\filtrer une table avec un grand nombre de colonnes.
OriginalL'auteur CeejeeB
C'est quelque chose que j'utilise pour les données de profil qui pourrait être utile. Il suffit de changer "le NOM de VOTRE TABLE" pour le nom de votre table. Il est destiné à vous montrer où des colonnes peut être coupé.
OriginalL'auteur user3761595
Le max_length champ au-dessus de la sys.les colonnes de la vue est la longueur maximale de la valeur du champ peut avoir. Ce n'est PAS la longueur maximale d'un champ de données à partir de MyTable. Ce que l'OP voulait était de comparer la longueur du type de données pour le maximum de la longueur réelle des données sur le terrain.
OriginalL'auteur Hamlet Hakobyan
corrigé requête ci-dessus
OriginalL'auteur user3332278
Ici est une version que j'ai utilisé pendant des années. Il remplace par un trait de soulignement pour les espaces de donner la vraie longueur de données avec des espaces.
OriginalL'auteur Keith Gresham
J'ai étendu la solution de CeejeeB l'ajout de nouveaux champs (Min, Max, NullCount et CountDinstict) et la fixation d'un bug entourant db noms avec [].
En plus, j'ai géré la taille de l'unicode types.
N'hésitez pas à essayer le changement de script SQL, mais attention car le script analyse toutes les tables définies par l'utilisateur de courant DB et cela peut prendre beaucoup à la fin...
OriginalL'auteur Filippo Bottega
ajouter: et t de.user_type_id = 167, sinon, vous obtenez de dup pour les non varchars. Je sais qu'il existe d'autres types, c'était une solution rapide pour une table spécifique
après c.object_id = OBJECT_ID(@YourTableName)
OriginalL'auteur alex
Noter que toutes les requêtes mentionnées ci-dessus le rapport de certaines "étrange" tailles - en particulier, pour n... types (de type nvarchar /nchar). Cette légèrement modifiée de la requête, résout ce problème:
OriginalL'auteur CameO73
La réponse est assez compliqué. Vous devez utiliser SQL dynamique pour mettre ensemble la requête ou de faire le travail dans Excel. Vous avez besoin de combiner les méta-données dans les tables système (je voudrais utiliser Information_Schema.Les colonnes) avec les données de la table elle-même.
Comment le faire, ce qui est expliqué sur les pages 84-90 de mon livre L'Analyse des données à l'Aide de SQL et Excel. La réponse est trop long pour ce site.
OriginalL'auteur Gordon Linoff
Légèrement modifiée, mais fonctionne un régal.
OriginalL'auteur user3909732