如何确定 SQL 服务器结果集中的列类型
How To Determine Column Types In A SQL Server Results Set
我有一个正在使用 SQL Server Management Studio (SSMS) 使用 SQL Server 2014 执行的存储过程,我得到了一个结果集。我想知道是否有可能发现列类型。例如,假设结果集有以下列:
Id
Name
BirthDate
Address
State
ZipCode
我想发现每一列的类型(例如 "Id" 是一个整数,"Name" 是一个字符串,等等)
我可以在 SSMS 中执行此操作而不必查看存储过程吗?是否有一些 SQL 语句我可以 运行 找出列类型?
对于 Sql Server 2012 及更高版本:
EXEC sp_describe_first_result_set N'SELECT * 来自客户', null, 0;
如果您只需要数据类型,那么试试这个。还有其他数据类型信息,您可以 return。查看 SQL_VARIANT_PROPERTY()
的文档
https://msdn.microsoft.com/en-us/library/ms178550.aspx
SELECT TOP 1 SQL_VARIANT_PROPERTY(ID,'basetype') AS ID,
SQL_VARIANT_PROPERTY(Name,'basetype') AS Name,
SQL_VARIANT_PROPERTY(BirthDate,'basetype') AS BirthDate,
SQL_VARIANT_PROPERTY([State],'basetype') AS [State],
SQL_VARIANT_PROPERTY(Zipcode,'basetype') AS Zipcode
FROM yourTable
理论结果:
ID Name Birthdate State Zipcode
-----------------------------------------------
int varchar datetime varchar int
我有一个正在使用 SQL Server Management Studio (SSMS) 使用 SQL Server 2014 执行的存储过程,我得到了一个结果集。我想知道是否有可能发现列类型。例如,假设结果集有以下列:
Id
Name
BirthDate
Address
State
ZipCode
我想发现每一列的类型(例如 "Id" 是一个整数,"Name" 是一个字符串,等等)
我可以在 SSMS 中执行此操作而不必查看存储过程吗?是否有一些 SQL 语句我可以 运行 找出列类型?
对于 Sql Server 2012 及更高版本:
EXEC sp_describe_first_result_set N'SELECT * 来自客户', null, 0;
如果您只需要数据类型,那么试试这个。还有其他数据类型信息,您可以 return。查看 SQL_VARIANT_PROPERTY()
的文档https://msdn.microsoft.com/en-us/library/ms178550.aspx
SELECT TOP 1 SQL_VARIANT_PROPERTY(ID,'basetype') AS ID,
SQL_VARIANT_PROPERTY(Name,'basetype') AS Name,
SQL_VARIANT_PROPERTY(BirthDate,'basetype') AS BirthDate,
SQL_VARIANT_PROPERTY([State],'basetype') AS [State],
SQL_VARIANT_PROPERTY(Zipcode,'basetype') AS Zipcode
FROM yourTable
理论结果:
ID Name Birthdate State Zipcode
-----------------------------------------------
int varchar datetime varchar int