我有数百个用户表,每个表都有很多列。Sys.Columns正在返回16000
列;而INFORMATION_SCHEMA.COLUMNS返回大约15,000
.
问题:为什么上述两个函数返回如此不同的计数?使用Sys.Columns
,我们如何获取ONLY
数据库中所有用户表的列?
SELECT COUNT(*) FROM sys.columns --16,000
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS --15,004
我有数百个用户表,每个表都有很多列。Sys.Columns正在返回16000
列;而INFORMATION_SCHEMA.COLUMNS返回大约15,000
.
问题:为什么上述两个函数返回如此不同的计数?使用Sys.Columns
,我们如何获取ONLY
数据库中所有用户表的列?
SELECT COUNT(*) FROM sys.columns --16,000
SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS --15,004
如果这样做,
sp_helptext 'INFORMATION_SCHEMA.COLUMNS'
您将看到INFORMATION_SCHEMA.COLUMNS
连接并仅包含相应对象类型为“U”或“V”的列sys.columns
。sys.objects
sys.colums
包括其他类型,完整列表记录为。所以下面应该返回相同的计数
o.type = 'U'
如果您只需要用户表,请使用