【问题标题】:Finding all Nullable Columns in SQL 2000 Database在 SQL 2000 数据库中查找所有可为空的列
【发布时间】:2009-07-11 11:14:48
【问题描述】:

如何在整个数据库的插入中找出允许为NULL值的列?

【问题讨论】:

  • 您可能/可能不希望排除那些不能作为检查约束的空 b/c 的。这可能会导致:stackoverflow.com/a/3195136/420667、Substring 和 CharIndex 可用于从定义中获取列名。

标签: sql sql-server null constraints


【解决方案1】:

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

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

一般来说,搜索这个标准视图,以获取有关您的架构和数据库结构的所有元数据信息;还有很多其他的(information_schema.tables、information_schema.constraints 等)

【讨论】:

  • 如果您的数据库设置为区分大小写,可能应该是 is_nullable = 'YES'(大写)以避免出现问题。
【解决方案2】:

只想查看基表中的列(而不是视图)的用户应加入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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 2012-12-18
    • 2018-07-24
    相关资源
    最近更新 更多