2009-07-11 6 views

Répondre

8

Je n'ai pas sql à portée de main, mais la requête ressemble à ceci

SELECT * FROM information_schema.columns WHERE is_nullable = 'YES' 

En général, la recherche de ce point de vue stardard, pour toutes les informations des métadonnées sur votre schéma et la structure de la base de données; il y en a beaucoup d'autres (information_schema.tables, information_schema.constraints, etc.)

+0

Probablement devrait être is_nullable = 'OUI' (majuscules) pour éviter des problèmes si votre base de données est configurée pour être sensible à la casse. –

+0

Le premier est le bon. – Juanma

+0

Merci ... je viens de l'éditer –

0

Ceux qui ne veulent voir que les colonnes des tables de base (pas les vues) doivent se joindre à INFORMATION_SCHEMA.TABLES. J'aime aussi exclure la table système sysdiagrams.

Recherche

SELECT 
    c.TABLE_NAME, 
    COLUMN_NAME, 
    DATA_TYPE 
FROM 
    INFORMATION_SCHEMA.COLUMNS AS c 
    JOIN INFORMATION_SCHEMA.TABLES AS t ON t.TABLE_NAME = c.TABLE_NAME 
WHERE 
    is_nullable = 'YES' AND 
    TABLE_TYPE = 'BASE TABLE' AND 
    c.TABLE_NAME != 'sysdiagrams' 
ORDER BY 
    c.TABLE_NAME, 
    COLUMN_NAME 

Si vous avez des noms de table en double dans les catalogues de schémas ou de table, vous devez impliquer les champs dans la jointure et, comme le montrent les réponses ici:

Differentiating tables and views in INFORMATION_SCHEMA.COLUMNS.

Questions connexes