是否有一个SQL语句可以在表中返回列的类型?SQL语句来获取列类型
回答
使用SQL Server:
SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'yourTableName' AND
COLUMN_NAME = 'yourColumnName'
仅当您不希望看到相应的列名称时。这只会返回类型。如果您想查看类型所属的列名称,则还需要选择COLUMN_NAME ... – HackyStack
并且如果您的表格不处于默认架构中,那么可以使用AND TABLE_SCHEMA ='yourSchema''扩展条件 – luviktor
是伟大的 - 但它有可能也让它返回列的类型的范围?即'varchar(255)'而不是'varchar'和'int(11)'而不是'int'? – mmcrae
在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 = ''
如果你使用MySQL,你可以尝试
SHOW COLUMNS FROM `tbl_name`;
否则,你应该能够做到
DESCRIBE `tbl_name`;
USE [YourDatabaseName]
GO
SELECT column_name 'Column Name',
data_type 'Data Type'
FROM information_schema.columns
WHERE table_name = 'YourTableName'
GO
这将返回值的列名,显示你的列的名称,以及这些列的数据类型(整型,VARCHAR处理等)。
在TSQL最简单的方法是:
SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'yourTableName'
对于IBM DB2:
SELECT TYPENAME FROM SYSCAT.COLUMNS WHERE TABSCHEMA='your_schema_name' AND TABNAME='your_table_name' AND COLNAME='your_column_name'
你可以这样做:
SELECT
DATA_TYPE
FROM
all_tab_columns
WHERE
table_name = 'TABLE NAME' -- in uppercase
AND column_name = 'COLUMN NAME' -- in uppercase
在我来说,我需要得到动态SQL(颤栗)的数据类型反正这里是我创建的返回完整的数据类型的函数。例如,而不是返回 '小数',将返回DECIMAL(18,4):dbo.GetLiteralDataType
对于SQL Server,该系统存储过程将返回所有表信息,包括列数据类型:
exec sp_help YOURTABLENAME
我upvoted因为这是虽然不是完全的答案,但提供了有价值的信息给我。例如。在Information架构中找不到的“IsComputed”信息,但我可以在sp_help过程代码中找到并从中复制。 – Christoph
对视图也有作用... –
使用TSQL/MSSQL
此查询将让你:表名,字段名,数据类型,数据类型的长度,并允许空值
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。
使用TSQL/MSSQL
可以使用INTO
关键字。
的SELECT
结果变成一个真正的表
例子:select .... INTO real_table_name
后
sp_help real_table_name
使用此查询来获取模式,表,列,类型,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]
使用MS SQL的另一种变体:
SELECT TYPE_NAME(system_type_id)
FROM sys.columns
WHERE name = 'column_name'
AND [object_id] = OBJECT_ID('[dbo].[table_name]');
对于Spark SQL:
DESCRIBE [db_name.]table_name column_name
- 1. SQL Server获取select语句中每列的数据类型
- 2. 获取从SQL语句返回的列
- 3. SQL语句中的varchar类型子句
- 4. 列类型和if语句
- 5. 查询来获取耗时在SQL Server SQL语句
- 6. 从SQL Server 2008中的任意sql语句中获取数据类型
- 7. 来自select语句的LINQ-to-SQL类
- 8. DateTime类型的SQL LIKE语句
- 9. 记录特定的SQL语句类型
- 10. 类型的SQL语句不能determinated
- 11. SQL语句来更新一列
- 12. SQL语句来生成列的值
- 13. 从SQL Select语句中获取列的列表
- 14. SQL语句来捕获类似的行具有不同ID的
- 15. SQL语句阵列
- 16. 如何获取sql语句来搜索百分号?
- 17. Oracle SQL语句不能从DB获取
- 18. Firebird SQL语句获取表格定义
- 19. 获取@@行数和@@ ErrorFlag从SQL语句
- 20. 获取从CDbCriteria生成的SQL语句
- 21. SQL语句获取主要行
- 22. SQL语句,获取查询RSQLite
- 23. 在视图后面获取sql语句
- 24. 获取SQL语句的方法更快
- 25. 如何从Sequel模型中获取SQL语句
- 26. SQL |选择语句| Temp列数据类型
- 27. SQL Server 2008需要用SQL语句创建用户表类型创建语句
- 28. SQL语句来查询
- 29. 新来动态SQL语句
- 30. 在ORACLE的select语句中获取字段的数据类型
还要看RDBMS;例如,SQL Server具有'sys.syscolumns'表。 – LittleBobbyTables
是的,但取决于您使用的是哪种类型的RDBMS,它会有所不同 - SQL是一种语言,而不是数据库产品,此问题依赖于特定产品。如果您的RDBMS拥有它,您将能够在“INFORMATION_SCHEMA.COLUMNS”表中找到这类信息。 – Bridge