Sql server 检查哪一列不可为空

Sql server 检查哪一列不可为空,sql-server,tsql,Sql Server,Tsql,我想知道是否有一个脚本可以运行,以查看哪些列不可为空,而不是整个数据库中的标识列 我在谷歌上搜索结果,但我找到的唯一结果是检查哪些数据为空的答案。因此我考虑查看sysobjects和sys.columns视图,并相应地加入了表中: select o.name [Table] ,c.name [Column] from sys.columns c inner join sysobjects o on c.object_id = o.id

我想知道是否有一个脚本可以运行,以查看哪些列不可为空,而不是整个数据库中的标识列


我在谷歌上搜索结果,但我找到的唯一结果是检查哪些数据为空的答案。

因此我考虑查看
sysobjects
sys.columns
视图,并相应地加入了表中:

select
    o.name  [Table]
    ,c.name [Column]
from
      sys.columns c
inner join 
       sysobjects o on
       c.object_id = o.id
where
      c.is_nullable = 0
      and c.is_identity = 0
order by 
      o.name
      ,c.name

这帮了大忙。

因此我考虑查看
sysobjects
sys.columns
视图,并相应地加入了表格:

select
    o.name  [Table]
    ,c.name [Column]
from
      sys.columns c
inner join 
       sysobjects o on
       c.object_id = o.id
where
      c.is_nullable = 0
      and c.is_identity = 0
order by 
      o.name
      ,c.name
这很有帮助。

你也可以这样做

USE YourDatabase
GO

SELECT T.name TableName,
       C.name ColumnName
FROM Sys.Tables T INNER JOIN Sys.Columns C ON T.object_id = C.object_id
WHERE C.is_nullable = 0
      AND
      C.is_identity = 0;
还是这个

SELECT T.Name TableName,
       STUFF(
              (
                SELECT ',' + C.Name
                FROM Sys.Columns C
                WHERE C.object_id = T.object_id
                      AND
                      C.is_nullable = 0
                      AND
                      C.is_identity = 0
                FOR XML PATH('')
              ), 1, 1, ''
       ) HasThosNonNullableColumns
FROM Sys.Tables T;

您可以根据需要执行此操作

USE YourDatabase
GO

SELECT T.name TableName,
       C.name ColumnName
FROM Sys.Tables T INNER JOIN Sys.Columns C ON T.object_id = C.object_id
WHERE C.is_nullable = 0
      AND
      C.is_identity = 0;
还是这个

SELECT T.Name TableName,
       STUFF(
              (
                SELECT ',' + C.Name
                FROM Sys.Columns C
                WHERE C.object_id = T.object_id
                      AND
                      C.is_nullable = 0
                      AND
                      C.is_identity = 0
                FOR XML PATH('')
              ), 1, 1, ''
       ) HasThosNonNullableColumns
FROM Sys.Tables T;