SQL-statement zum Abrufen des Spaltentyps

Gibt es eine SQL-statement, die den Typ einer Spalte in einer Tabelle zurückgeben kann?

Verwenden von SQL server:

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

Der einfachste path in TSQL ist:

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

Für SQL server gibt diese gespeicherte Systemprozedur alle Tabelleninformationen einschließlich Spaltendatentypen zurück:

 exec sp_help YOURTABLENAME 

In TSQL / MSSQL sieht es so aus:

 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 = '' 

Wenn Sie MySQL verwenden, könnten Sie es versuchen

 SHOW COLUMNS FROM `tbl_name`; 

SHOW COLUMNS auf dev.mysql.com

Sonst sollte es dir möglich sein

 DESCRIBE `tbl_name`; 

In Oracle SQL würden Sie dies tun:

 SELECT DATA_TYPE FROM all_tab_columns WHERE table_name = 'TABLE NAME' -- in uppercase AND column_name = 'COLUMN NAME' -- in uppercase 
 USE [YourDatabaseName] GO SELECT column_name 'Column Name', data_type 'Data Type' FROM information_schema.columns WHERE table_name = 'YourTableName' GO 

Dadurch werden die Werte Column Name zurückgegeben, die die Namen der Spalten und die datatypen dieser Spalten (ints, varchars usw.) anzeigen.

Für IBM DB2 :

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

Eine weitere Variante mit MS SQL:

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

In meinem Fall musste ich den datatyp für Dynamic SQL (Shudder!) Trotzdem bekommen. Hier ist eine function, die ich erstellt habe, die den vollen datatyp zurückgibt. Zum Beispiel würde anstelle von 'dezimal' DECIMAL (18,4) zurückgegeben: dbo.GetLiteralDataType

Verwenden von TSQL / MSSQL

Mit dieser Abfrage get: Tabellenname, Spaltenname, datatyp, datatyplänge und zulässige Nullwerte

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

Die einzige Sache, die geändert werden muss, ist your_table_name.

Verwenden Sie diese Abfrage, um Schema, Tabelle, Spalte, Typ, max_length, is_nullable abzurufen

 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] 

Verwenden von TSQL / MSSQL

Sie können das INTO Schlüsselwort verwenden.

Das Ergebnis von SELECT in eine reale Tabelle

Beispiel: select .... INTO real_table_name

Nach

 sp_help real_table_name