SQL语句来获取列types

有没有一个SQL语句可以返回表中的列的types?

使用SQL Server:

 SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'yourTableName' AND COLUMN_NAME = 'yourColumnName' 

TSQL最简单的方法是:

 SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'yourTableName' 

对于SQL Server,此系统存储过程将返回所有表信息,包括列数据types:

 exec sp_help YOURTABLENAME 

在TSQL / MSSQL中,它看起来像:

 SELECT t.name, c.name FROM sys.tables t JOIN sys.columns c ON t.object_id = c.object_id JOIN sys.types y ON y.system_type_id = c.system_type_id WHERE t.name = '' 

在oracle中你可以这样做:

 SELECT DATA_TYPE FROM all_tab_columns WHERE table_name = 'TABLE NAME' -- in uppercase AND column_name = 'COLUMN NAME' -- in uppercase 

如果你使用MySQL,你可以尝试

 SHOW COLUMNS FROM `tbl_name`; 

在dev.mysql.com上显示COLUMNS

否则,你应该能够做到

 DESCRIBE `tbl_name`; 
 USE [YourDatabaseName] GO SELECT column_name 'Column Name', data_type 'Data Type' FROM information_schema.columns WHERE table_name = 'YourTableName' GO 

这将返回值列名称,显示列的名称和这些列的数据types(整数,variables等)。

对于IBM DB2

 SELECT TYPENAME FROM SYSCAT.COLUMNS WHERE TABSCHEMA='your_schema_name' AND TABNAME='your_table_name' AND COLNAME='your_column_name' 

使用MS SQL的另一个变体:

 SELECT TYPE_NAME(system_type_id) FROM sys.columns WHERE name = 'column_name' AND [object_id] = OBJECT_ID('[dbo].[table_name]'); 

在我的情况下,我需要获得dynamicSQL(Shudder!)的数据types,无论如何,这里是我创build的函数,返回完整的数据types。 例如,不是返回“decimal”,而是返回DECIMAL(18,4): dbo.GetLiteralDataType

使用TSQL / MSSQL

这个查询将得到你:表名,列名,数据types,数据types长度和允许的空值

 SELECT TABLE_NAME,COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'your_table_name' 

唯一需要改变的是your_table_name。

使用此查询来获取Schema,Table,Column,Type,max_length,is_nullable

 SELECT QUOTENAME(SCHEMA_NAME(tb.[schema_id])) AS 'Schema' ,QUOTENAME(OBJECT_NAME(tb.[OBJECT_ID])) AS 'Table' ,C.NAME as 'Column' ,T.name AS 'Type' ,C.max_length ,C.is_nullable FROM SYS.COLUMNS C INNER JOIN SYS.TABLES tb ON tb.[object_id] = C.[object_id] INNER JOIN SYS.TYPES T ON C.system_type_id = T.user_type_id WHERE tb.[is_ms_shipped] = 0 ORDER BY tb.[Name] 

使用TSQL / MSSQL

您可以使用INTO关键字。

SELECT的结果变成了一个真正的TABLE

例如: select .... INTO real_table_name

 sp_help real_table_name