AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 140756
Accepted
Jmaurier
Jmaurier
Asked: 2016-06-09 09:38:41 +0800 CST2016-06-09 09:38:41 +0800 CST 2016-06-09 09:38:41 +0800 CST

如何按数据类型选择列名

  • 772

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

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

sql-server
  • 5 5 个回答
  • 13401 Views

5 个回答

  • Voted
  1. Chad Mattox
    2016-06-09T09:49:26+08:002016-06-09T09:49:26+08:00

    sys.columns像这样查询sys.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'
    
    • 7
  2. Best Answer
    Kin Shah
    2016-06-09T10:58:30+08:002016-06-09T10:58:30+08:00

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

    (输出为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'
    
    • 4
  3. Lennart - Slava Ukraini
    2016-06-09T09:54:38+08:002016-06-09T09:54:38+08:00

    你可以使用INFORMATION_SCHEMA.COLUMNS. 文档说这TABLE_SCHEMA对对象不可靠,但我认为它适用于表和列:

    SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE DATA_TYPE = ?
    

    参考: https ://msdn.microsoft.com/en-us/library/ms188348.aspx

    • 2
  4. WelshGandalf
    2016-06-09T11:42:32+08:002016-06-09T11:42:32+08:00

    对于给定的表...

    SELECT sc.name AS column_name, t.name AS data_type, t.max_length, t.[precision], t.scale
    FROM sys.columns sc
    INNER JOIN sys.types t ON sc.user_type_id = t.user_type_id
    WHERE sc.object_id = OBJECT_ID('AdventureWorks2012.Person.Person')
    ORDER BY sc.column_id
    

    这将按照它们在表中列出的顺序为您提供它们。通过使用 user_type,您还可以了解用户创建数据类型的可能性。采用额外参数的数据类型需要最后 3 个字段,例如 VARCHAR(200)、NUMERIC(12,3)。如果您在 max_length 字段中看到 -1,那么它可能类似于 VARCHAR(MAX) 或 XML。

    对于多个表,这很棘手。您可以从您的表中创建一个表(可能使用 SELECT TOP(0) 以免打扰复制数据),然后将其插入上面。但是,如果您在这些表中具有相同名称的字段,则不会创建您的表。记得之后放下你的桌子。你可以做一个临时表,但他们很难找到 object_id 。

    • 1
  5. Reginaldo Rigo
    2016-06-09T09:53:31+08:002016-06-09T09:53:31+08:00

    你可以这样做:

       SELECT COLUMN_NAME FROM user_tab_columns WHERE 
         table_name = 'MYTABLE' AND DATA_TYPE = 'DATE'
    
    
       SELECT TABLE_NAME, COLUMN_NAME FROM user_tab_columns 
         WHERE  DATA_TYPE = 'DATE'
    
    • -1

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve