是否有一個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