GUI'er som SSMS eller Azure Data Studio gør det nemt at se en kolonnes datatype. Normalt er det et simpelt spørgsmål om at navigere til kolonnen i objektudforskeren, og du kan se datatypen lige ved siden af kolonnen.
Men hvis du bruger T-SQL, skal du køre en forespørgsel.
information_schema.columns
Vis
information_schema.columns
view er en god mulighed, hvis du blot ønsker datatypen og ikke mere:
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';
ProductName'
Eksempelresultat:
+---------------+-------------+--------------+- ---------------+| COLUMN_NAME | DATA_TYPE | MAX_LENGTH | OCTET_LENGTH ||---------------+-------------+--------------+-- --------------|| Produktnavn | varchar | 255 | 255 |+--------------------------------- --------------+
Erstat Products
og ProductName
med navnet på henholdsvis din tabel og kolonne.
OK, jeg returnerede lidt mere end blot datatypen her. Men du kan udelade de andre kolonner, hvis det er nødvendigt. Eller du kan tilføje flere. Der er f.eks. kolonner, der indeholder kolonnens præcision, hvis du ser på en numerisk kolonne eller en dato og klokkeslæt.
Du kan returnere alle kolonner sådan her:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Products'
AND COLUMN_NAME = 'ProductName';
sys.columns
Vis
sys.columns
view er en anden mulighed. Vi kan tilslutte dette med sys.tables
visning for at få en bestemt kolonne fra en bestemt tabel:
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';
Eksempelresultat:
+-------------+---------------+-------------+-- ------------+-------------+---------+| navn | system_type | brugertype | max_længde | præcision | skala ||-------------+---------------+-------------+--- ----------+-------------+--------|| Produktnavn | varchar | varchar | 255 | 0 | 0 |+-------------+---------------+-------------+---- -----------+-------------+---------+
Igen, medtag flere eller færre kolonner efter behov.
I dette eksempel brugte jeg TYPE_NAME()
funktion for at returnere navnet på datatypen baseret på dens ID. Dette reddede mig fra at skulle deltage på sys.types
tabel.
sp_help
Lagret procedure
sp_help
lagret procedure kan være nyttig, hvis du ønsker at returnere flere oplysninger om tabellen.
Denne lagrede procedure returnerer information om et databaseobjekt (ethvert objekt, der er angivet i sys.sysobjects
kompatibilitetsvisning), en brugerdefineret datatype eller en datatype:
EXEC sp_help Products;
Dette returnerer en masse output, så jeg vil ikke liste det hele her.
Bare udskift Products
med navnet på tabellen eller andet objekt, du ønsker at få information om.
Få en kolonnes datatype fra en forespørgsel
Du kan også få datatypen for kolonnerne returneret af en forespørgsel.
Se Find ud af datatypen for de kolonner, der returneres i et resultatsæt i SQL Server for at få flere oplysninger og eksempler.