sql >> Database teknologi >  >> RDS >> Sqlserver

3 måder at få en kolonnes datatype i SQL Server (T-SQL)

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.


  1. Skift en partition ud i SQL Server (T-SQL)

  2. Beregning af værdi ved hjælp af forrige værdi af en række i T-SQL

  3. Få det korte måneds navn i PostgreSQL

  4. Neo4j Query Language - Cypher