查找SQL 2000数据库中的所有可空字段

问题描述:

如何查找在整个数据库的插入中允许使用NULL值的列?查找SQL 2000数据库中的所有可空字段

我没有手头SQL,但查询是这样的

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

一般来说,搜索此视图参考标准,为你的架构和数据库结构的所有元数据信息;还有很多其他的信息(information_schema.tables,information_schema.constraints等)

+0

如果您的数据库设置为区分大小写,可能应该是is_nullable ='YES'(大写字母)以避免问题。 – 2009-07-11 11:28:13

那些只希望看到来自基表(不是视图)的列的人应该加入INFORMATION_SCHEMA.TABLES。我也想排除系统表sysdiagrams

查询

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 

如果您有跨架构或表目录重复表名称,您应该包括在加入以及这些领域,如在这里的答案:

Differentiating tables and views in INFORMATION_SCHEMA.COLUMNS