GUI som SSMS eller Azure Data Studio gör det enkelt att se en kolumns datatyp. Vanligtvis är det en enkel fråga om att navigera till kolumnen i objektutforskaren och du kan se datatypen precis bredvid kolumnen.
Men om du använder T-SQL måste du köra en fråga.
information_schema.columns
Visa
information_schema.columns
view är ett bra alternativ om du bara vill ha datatypen och inte mer:
SELECT
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH AS MAX_LENGTH,
CHARACTER_OCTET_LENGTH AS OCTET_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Products'
AND COLUMN_NAME = 'ProductName';
Exempelresultat:
+---------------+-------------+--------------+----------------+ | COLUMN_NAME | DATA_TYPE | MAX_LENGTH | OCTET_LENGTH | |---------------+-------------+--------------+----------------| | ProductName | varchar | 255 | 255 | +---------------+-------------+--------------+----------------+
Ersätt Products
och ProductName
med namnet på din tabell respektive kolumn.
OK, jag returnerade lite mer än bara datatypen här. Men du kan utelämna de andra kolumnerna om det behövs. Eller så kan du lägga till fler. Det finns till exempel kolumner som innehåller kolumnens precision om du tittar på en numerisk eller datetime-kolumn.
Du kan returnera alla kolumner så här:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Products'
AND COLUMN_NAME = 'ProductName';
sys.columns
Visa
sys.columns
vy är ett annat alternativ. Vi kan ansluta till detta med sys.tables
visa för att hämta en specifik kolumn från en specifik tabell:
SELECT
c.name,
type_name(c.system_type_id) AS system_type,
type_name(c.user_type_id) AS user_type,
c.max_length,
c.precision,
c.scale
FROM sys.tables t
JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.name = 'Products'
AND c.name = 'ProductName';
Exempelresultat:
+-------------+---------------+-------------+--------------+-------------+---------+ | name | system_type | user_type | max_length | precision | scale | |-------------+---------------+-------------+--------------+-------------+---------| | ProductName | varchar | varchar | 255 | 0 | 0 | +-------------+---------------+-------------+--------------+-------------+---------+
Återigen, inkludera fler eller färre kolumner efter behov.
I det här exemplet använde jag TYPE_NAME()
funktion för att returnera namnet på datatypen, baserat på dess ID. Detta räddade mig från att behöva göra en join på sys.types
bord.
sp_help
Lagrad procedur
sp_help
lagrad procedur kan vara användbar om du vill returnera mer information om tabellen.
Denna lagrade procedur returnerar information om ett databasobjekt (vilket objekt som helst som listas i sys.sysobjects
kompatibilitetsvy), en användardefinierad datatyp eller en datatyp:
EXEC sp_help Products;
Detta ger mycket utdata, så jag kommer inte att lista allt här.
Byt bara ut Products
med namnet på tabellen eller annat objekt du vill få information om.
Hämta en kolumns datatyp från en fråga
Du kan också få datatypen för kolumnerna som returneras av en fråga.
Se Ta reda på datatypen för kolumnerna som returneras i en resultatuppsättning i SQL Server för mer information och exempel.