SQL表 - 获取表中必需列的数量

时间:2013-03-05 12:14:18

标签: sql sql-server database tsql

如何获取(统计)表中必填列数?

2 个答案:

答案 0 :(得分:1)

我认为你的意思是NOT 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

这将检索数据库中每个表的所有mandatory列。您可以通过仅指定一个表来修改此查询。

SELECT COUNT(name) FROM sys.columns
WHERE OBJECT_ID = OBJECT_ID('Client') 
AND COLUMNPROPERTY(OBJECT_ID('Client'),name,'AllowsNull') IS NOT NULL

COUNTClient表的必填列。

答案 1 :(得分:0)

此查询可以提供帮助

我认为CHARacter_maximum_length> 0是强制条件

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

对于

IS_NULLABLE是真的,而不是IS_NULLABLE ='是'

IS_NULLABLE是错误的,而不是IS_NULLABLE ='否'

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