查找SQL 2000数据库中的所有可空字段
答
我没有手头SQL,但查询是这样的
SELECT * FROM information_schema.columns WHERE is_nullable = 'YES'
一般来说,搜索此视图参考标准,为你的架构和数据库结构的所有元数据信息;还有很多其他的信息(information_schema.tables,information_schema.constraints等)
答
那些只希望看到来自基表(不是视图)的列的人应该加入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。
如果您的数据库设置为区分大小写,可能应该是is_nullable ='YES'(大写字母)以避免问题。 – 2009-07-11 11:28:13