You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写查询语句列出含特定数据类型的表(排除视图)

如何修改查询以仅列出包含特定数据类型的表(排除视图)?

嘿,这个问题很常见,我来帮你搞定!要实现只返回表、排除视图的需求,核心就是确保我们的查询只关联存储表对象的系统视图,或者在关联通用对象视图时加上表类型的筛选条件。

先看你给出的当前查询——其实它已经用了sys.tables,而sys.tables本身只存储数据库里的用户表,不会包含视图。如果你之前的脚本确实会返回视图,可能是之前用了sys.objects或者sys.all_objects这类包含所有对象的视图?不管怎样,我给你两种可靠的修改方案:

方案1:基于sys.tables的最简写法(推荐)

这个方案直接利用sys.tables只包含表的特性,不需要额外过滤条件,结果自然排除视图:

SELECT 
    s.name AS 'schema',
    ts.name AS TableName,
    c.name AS column_name,
    c.column_id,
    SCHEMA_NAME(t.schema_id) AS DatatypeSchema,
    t.name AS Datatypename,
    t.is_user_defined,
    t.is_assembly_type,
    c.is_nullable,
    c.max_length,
    c.PRECISION,
    c.scale
FROM sys.columns AS c
INNER JOIN sys.types AS t ON c.user_type_id = t.user_type_id
-- 仅关联用户表,自动排除视图
INNER JOIN sys.tables ts ON ts.OBJECT_ID = c.OBJECT_ID
INNER JOIN sys.schemas s ON s.schema_id = ts.schema_id
-- 如果你要筛选特定数据类型,添加下面的WHERE子句(示例为筛选nvarchar)
-- WHERE t.name = 'nvarchar'
ORDER BY s.name, ts.name, c.column_id

方案2:如果之前用的是sys.objects,添加类型筛选

如果你原来的脚本是关联sys.objects(这个视图包含表、视图、存储过程等所有对象),只需要加一个WHERE条件筛选表类型(用户表的类型标识是'U',视图是'V'):

SELECT 
    s.name AS 'schema',
    o.name AS TableName,
    c.name AS column_name,
    c.column_id,
    SCHEMA_NAME(t.schema_id) AS DatatypeSchema,
    t.name AS Datatypename,
    t.is_user_defined,
    t.is_assembly_type,
    c.is_nullable,
    c.max_length,
    c.PRECISION,
    c.scale
FROM sys.columns AS c
INNER JOIN sys.types AS t ON c.user_type_id = t.user_type_id
INNER JOIN sys.objects o ON o.OBJECT_ID = c.OBJECT_ID
INNER JOIN sys.schemas s ON s.schema_id = o.schema_id
-- 关键:筛选仅用户表,排除视图及其他对象
WHERE o.type = 'U'
-- 同样可以添加特定数据类型的筛选
-- AND t.name = '你的目标数据类型'
ORDER BY s.name, o.name, c.column_id

小提示

  • 如果你需要找的是自定义数据类型,可以结合t.is_user_defined = 1来进一步筛选。
  • 记得替换WHERE子句里的类型名,改成你要找的特定数据类型(比如int、datetime2或者自定义类型的名称)。

内容的提问来源于stack exchange,提问作者Don

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:51:27