IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[T-SQL][SQL Server 2k]Taille d'une colonne


Sujet :

MS SQL Server

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Points : 231
    Points
    231
    Par défaut [T-SQL][SQL Server 2k]Taille d'une colonne
    Salut à tous !
    Je cherche une fonction qui me renvoie la taille d'une colonne...

    Ca me semble tres con mais je n'ai pas trouvé ni avec mon pote google ni en faisant une recherche ici

    Une idée ?

  2. #2
    Membre actif
    Inscrit en
    Février 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 185
    Points : 224
    Points
    224
    Par défaut
    salut,
    si tu veux parler du nombre de caractères d'une colonne de type char, varchar ou text tu peux utiliser la fonction len
    exple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select len(colonne) from table

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Points : 231
    Points
    231
    Par défaut
    Hello !
    Merci de ta réponse.

    En fait ca n'est pas exactement ca, je ne cherche pas à savoir le nombre de caractere contenu, mais la taille maximum de la colonne.
    Exemple : si ma colonne est en varchar(50), cette fonction renverrait 50.

    En fait le probleme est que j'ai des tables, et l'une d'elle contient l'ensemble des colonnes de toutes les tables, avec leur taille, leur type etc...
    Ca je viens de le découvrir, donc à chaque fois que je modifiais la taille d'une colonne, j'étais censé reporter ce changement dans cette table des colonnes.
    Comme je ne l'ai pas fait, j'aimerais maintenant comparer les tailles des colonnes de toute les tables de ma base avec les tailles répertoriées dans la table des colonnes, pour mettre sur pied une PS qui m'update cette table comme il faut, sans avoir à parcourir ma base manuellement.

    Donc je cherche comment trouver la taille d'une colonne.

    (c'est compréhensible mon truc ? '-_- )

  4. #4
    Membre actif
    Inscrit en
    Février 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 185
    Points : 224
    Points
    224
    Par défaut
    ok je vois, je n'avais pas bien compris alors ta question.
    Cette requete te permettra d'avoir toutes les colonnes en varchar, char ou nvarchar de ta base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select table_name,column_name,data_type,character_maximum_length 
    from INFORMATION_SCHEMA.COLUMNS
    where data_type='varchar' or data_type='char' or data_type='nvarchar'

  5. #5
    Membre du Club
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Points : 65
    Points
    65
    Par défaut
    Si ca peut aider des personnes voici une autre solution, pour avoir la longueur d'une colonne d'une table souhaité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT LENGTH FROM SYSCOLUMNS AS COL 
    	INNER JOIN SYSOBJECTS AS OBJ ON COL.ID = OBJ.ID 
    		AND OBJ.XTYPE = 'U' 
    		AND OBJ.NAME = 'NomDeLaTable'
    WHERE COL.NAME='NomDeLaColonne'

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    On peut être un peu plus complet en écrivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    SELECT		S.name AS schema_name
    		, T.name AS table_name
    		, C.name AS column_name
    		, TY.name
    		+ CASE
    			WHEN C.max_length = -1 THEN '(max)'
    			WHEN TY.name IN ('nchar', 'nvarchar') THEN '(' + CAST(C.max_length / 2 AS varchar(4)) + ')'
    			WHEN TY.name IN ('char', 'varchar') THEN '(' + CAST(C.max_length AS varchar(4)) + ')'
    			WHEN TY.name IN ('decimal', 'numeric', 'float', 'real') THEN '(' + CAST(C.precision AS varchar(3)) + ',' + CAST(C.scale AS varchar(3)) + ')'
    			WHEN TY.name IN ('datetime2', 'time', 'datetimeoffset') THEN '(' + CAST(C.scale AS varchar(3)) + ')'
    			ELSE ''
    		END AS datatype_name
    		, C.max_length AS bytes
    FROM		sys.schemas AS S
    INNER JOIN	sys.tables AS T
    			ON S.schema_id = T.schema_id
    INNER JOIN	sys.columns AS C
    			ON T.object_id = C.object_id
    INNER JOIN	sys.types AS TY
    			ON TY.system_type_id = C.system_type_id
    			AND TY.system_type_id = TY.user_type_id
    WHERE		S.name = 'dbo'
    AND		T.name = 'maTable'
    --AND		C.name = 'maColonne'
    En revanche je ne suis pas sûr que cela fonctionne sous SQL Server 2000 ...

    @++

Discussions similaires

  1. [SQL Server] syntaxe pour ajouter une colonne à une table
    Par gloglo dans le forum Langage SQL
    Réponses: 8
    Dernier message: 10/09/2009, 11h43
  2. SQL Server 2005 : taille d'une base de données
    Par @yoyo dans le forum Administration
    Réponses: 6
    Dernier message: 17/04/2009, 11h43
  3. Réponses: 11
    Dernier message: 18/10/2007, 12h49
  4. [sql 2005]: changer le nom d'une colonne dans un table
    Par TheLittle dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2006, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo