SQL表-获取表中强制列的计数

SQL表-获取表中强制列的计数,sql,sql-server,database,tsql,Sql,Sql Server,Database,Tsql,如何获取(计数)表中强制列的数量?我假定您的意思是不为NULL,要在SQL Server中执行此操作,您可以执行以下操作: SELECT sys.tables.name, c.name FROM sys.tables INNER JOIN sys.columns c ON c.object_id = sys.tables.object_id WHERE COLUMNPROPERTY(OBJECT_ID(sys.tables.name),c.name,'AllowsNull') IS NOT NU

如何获取(计数)表中强制列的数量?

我假定您的意思是
不为NULL
,要在SQL Server中执行此操作,您可以执行以下操作:

SELECT sys.tables.name, c.name
FROM sys.tables
INNER JOIN sys.columns c ON c.object_id = sys.tables.object_id
WHERE COLUMNPROPERTY(OBJECT_ID(sys.tables.name),c.name,'AllowsNull') IS NOT NULL
这将检索数据库中每个表的所有
必填列。您可以通过只指定一个表来修改此查询

SELECT COUNT(name) FROM sys.columns
WHERE OBJECT_ID = OBJECT_ID('Client') 
AND COLUMNPROPERTY(OBJECT_ID('Client'),name,'AllowsNull') IS NOT NULL
计数
客户机
表的必填列

这个查询会有所帮助

我认为字符的最大长度>0是必须的条件

SELECT Count(*)
FROM information_schema.columns WHERE table_name = 'Role' and CHARacter_maximum_length>0
为了

IS_NULLABLE比IS_NULLABLE为真='Yes'

IS_NULLABLE比IS_NULLABLE='No'为假

SELECT Count(*)
FROM information_schema.columns WHERE table_name = 'Role' and IS_NULLABLE = 'Yes'

强制的意思是什么?你是说主键列吗?请具体说明。