【问题标题】:get the data type of columns in a select query获取选择查询中列的数据类型
【发布时间】:2019-07-31 14:36:05
【问题描述】:

我知道您可以使用下面的查询来获取表列的类型。

select COLUMN_NAME, DATA_TYPE 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'myTbl'

我想知道当您编写一个涉及 2 个或更多表的选择查询时,您是否可以做类似的事情? IE。有没有办法确定列数据类型?

【问题讨论】:

标签: sql-server sql-server-2016


【解决方案1】:

另一个选项是sys.dm_exec_describe_first_result_set()

这样做的好处是您可以虚拟地提供任何查询、表、视图甚至存储过程。

示例

Select column_ordinal
      ,name
      ,system_type_name 
 From sys.dm_exec_describe_first_result_set('Exec [dbo].[prc-App-Lottery-Search] ''7613''',null,null )  

退货

column_ordinal  name        system_type_name
1               DrawDate    date
2               DrawDE      varchar(1)
3               DrawAct     varchar(4)
4               DrawNrm     varchar(4)
5               Hits        int
6               Elapsed     nvarchar(4000)

查看所有可用列的通用示例

Select *
 From sys.dm_exec_describe_first_result_set('Select * from master..spt_values',null,null )  

【讨论】:

  • * 除非查询或存储过程引用临时表、跨越数据库/服务器边界等
  • @AaronBertrand 我应该说虚拟的 :)
【解决方案2】:

你可以这样做:

select COLUMN_NAME, DATA_TYPE 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME IN ('myTbl1','myTbl2')

【讨论】:

    【解决方案3】:

    我使用以下查询了解有关表中列的所有详细信息(比选择所有列短)

    描述表名;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      相关资源
      最近更新 更多