Lister les colonnes d’une ou des toutes les tables avec leurs types

Voici une requête simple pour obtenir tout cela :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-------------------------------
-- Nicolas SOUQUET - 13/12/2010
-------------------------------
SELECT    S.name AS schema_name
    , T.name AS table_name
    , C.name AS column_name
    , C.column_id
    , TY.name AS data_type_name
    , CASE WHEN TY.name IN ('nchar', 'nvarchar') THEN C.max_length / 2 ELSE C.max_length END AS max_length
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 C.object_id = T.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    1 = 1
--AND    S.name = 'dbo'
--AND    T.name = 'maTable'
--AND    C.name = 'maColonne'
ORDER BY  T.name, C.column_id

ElSüket ;)

3 réflexions au sujet de « Lister les colonnes d’une ou des toutes les tables avec leurs types »

  1. je me permets de faire la proposition suivante :

    SELECT c.TABLE_CATALOG + ‘.’ + c.TABLE_SCHEMA + ‘.’+ c.TABLE_NAME + ‘.’ + c.COLUMN_NAME as [Base.Schema.Table.colonne]
    ,typ.name as [Type]
    ,CASE typ.max_length
    WHEN -1 THEN 2147483648
    ELSE typ.max_length
    END [Nombre Max Octets]
    FROM INFORMATION_SCHEMA.COLUMNS c INNER JOIN INFORMATION_SCHEMA.TABLES t
    ON c.TABLE_NAME = t.TABLE_NAME
    AND c.TABLE_CATALOG = t.TABLE_CATALOG
    AND c.TABLE_SCHEMA = t.TABLE_SCHEMA
    INNER JOIN sys.types typ
    ON c.DATA_TYPE = typ.name
    –WHERE c.TABLE_NAME = ‘maTable’

    ORDER BY [Base.Schema.Table.colonne]

  2. Sous SQL SERVER 2008 R2, on a les types geometry et geography

    name system_type_id user_type_id
    geometry 240 129
    geography 240 130

    donc la jointure ci-dessous pose problème :

    INNER JOIN sys.types AS TY
    ON TY.system_type_id = C.system_type_id
    AND TY.system_type_id = TY.user_type_id

    et par conséquent les colonnes de types geometry et geography ne sont pas afficher par ton script.

    as-tu une solution à ce problème lié aux types geometry et geography ?

    A +

Laisser un commentaire