区分 INFORMATION_SCHEMA.COLUMNS 中的表和视图

Wil*_*iam 8 sql-server

我有一个从 INFORMATION_SCHEMA.COLUMNS 中选择信息的视图,它似乎同时提供了列和视图。有没有一种简单的方法可以判断哪些行是列,哪些是视图?我应该与 INFORMATION_SCHEMA.VIEWS 进行比较吗?我需要列和视图,我只想知道哪个是哪个。

mrd*_*nny 10

您需要对 INFORMATION_SCHEMA.VIEWS 进行左外连接以查看它们是否为视图。

select CASE WHEN b.TABLE_NAME is not null then 'view' else 'table' end OBJECT_TYPE,
    a.*
from INFORMATION_SCHEMA.COLUMNS a
LEFT OUTER JOIN INFORMATION_SCHEMA.VIEWS b ON a.TABLE_CATALOG = b.TABLE_CATALOG
    AND a.TABLE_SCHEMA = b.TABLE_SCHEMA
    AND a.TABLE_NAME = b.TABLE_NAME
Run Code Online (Sandbox Code Playgroud)


小智 9

@mrdenny发布的查询似乎没有为我返回可靠的数据。我有更多的运气这样。

select b.TABLE_TYPE, a.*
from INFORMATION_SCHEMA.COLUMNS a
LEFT OUTER JOIN INFORMATION_SCHEMA.TABLES b ON a.TABLE_CATALOG = b.TABLE_CATALOG
    AND a.TABLE_SCHEMA = b.TABLE_SCHEMA
    AND a.TABLE_NAME = b.TABLE_NAME
Run Code Online (Sandbox Code Playgroud)