如何按数据类型选择列名

Jma*_*ier 6 sql-server

如何获取表中具有特定类型(例如日期时间)的所有列的名称?

更好 - 我怎样才能做同样的事情,但将多个表连接在一起,然后列出列名及其来自的表?

Cha*_*tox 7

查询sys.columnssys.types像这样:

select object_name(c.object_id) TableName, * 
FROM sys.columns c
join sys.types t ON c.system_type_id = t.system_type_id
where t.name = 'datetime'
Run Code Online (Sandbox Code Playgroud)


Kin*_*hah 4

如何获取表中特定类型(例如日期时间)的所有列的名称?

(输出为schema_name | table_name | column_name | data_type):

SELECT Object_Schema_name(c.object_id) as [SCHEMA_NAME]
    ,object_NAME(c.object_id) AS TABLE_NAME
    ,c.NAME AS COLUMN_NAME
    ,t.NAME AS DATA_TYPE
    -- add / remove columns as per need
    --,c.max_length AS MAX_LENGTH
FROM sys.all_columns c
INNER JOIN sys.types t ON t.system_type_id = c.system_type_id
where Object_Schema_name(c.object_id) <> 'sys' -- not sys schema
    -- filters 
        and t.name = 'Datetime'
    --  and object_NAME(c.object_id) = 'someTableName'
Run Code Online (Sandbox Code Playgroud)