sql >> Database >  >> RDS >> Sqlserver

3 manieren om het gegevenstype van een kolom in SQL Server (T-SQL) te krijgen

GUI's zoals SSMS of Azure Data Studio maken het gemakkelijk om het gegevenstype van een kolom te zien. Meestal is het een kwestie van navigeren naar de kolom in de objectverkenner en kunt u het gegevenstype direct naast de kolom zien.

Maar als u T-SQL gebruikt, moet u een query uitvoeren.

De information_schema.columns Bekijk

De information_schema.columns weergave is een goede optie als u alleen het gegevenstype wilt en niet meer:

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

Voorbeeld resultaat:

+---------------+-------------+--------------+----------------+
| COLUMN_NAME   | DATA_TYPE   | MAX_LENGTH   | OCTET_LENGTH   |
|---------------+-------------+--------------+----------------|
| ProductName   | varchar     | 255          | 255            |
+---------------+-------------+--------------+----------------+

Vervang Products en ProductName met respectievelijk de naam van uw tabel en kolom.

OK, ik heb hier iets meer teruggegeven dan alleen het gegevenstype. Maar u kunt desgewenst de andere kolommen weglaten. Of u kunt meer toevoegen. Er zijn bijvoorbeeld kolommen die de precisie van de kolom bevatten voor het geval u naar een numerieke of datetime-kolom kijkt.

U kunt alle kolommen als volgt retourneren:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Products' 
AND COLUMN_NAME = 'ProductName';

De sys.columns Bekijk

De sys.columns bekijken is een andere optie. We kunnen dit samenvoegen met de sys.tables bekijken om een ​​specifieke kolom uit een specifieke tabel te halen:

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

Voorbeeld resultaat:

+-------------+---------------+-------------+--------------+-------------+---------+
| name        | system_type   | user_type   | max_length   | precision   | scale   |
|-------------+---------------+-------------+--------------+-------------+---------|
| ProductName | varchar       | varchar     | 255          | 0           | 0       |
+-------------+---------------+-------------+--------------+-------------+---------+

Nogmaals, voeg indien nodig meer of minder kolommen toe.

In dit voorbeeld heb ik de TYPE_NAME() . gebruikt functie om de naam van het gegevenstype te retourneren, op basis van zijn ID. Hierdoor hoefde ik geen join te doen op de sys.types tafel.

De sp_help Opgeslagen procedure

De sp_help opgeslagen procedure kan handig zijn als u meer informatie over de tabel wilt retourneren.

Deze opgeslagen procedure retourneert informatie over een databaseobject (elk object dat wordt vermeld in de sys.sysobjects compatibiliteitsweergave), een door de gebruiker gedefinieerd gegevenstype of een gegevenstype:

EXEC sp_help Products;

Dit levert veel output op, dus ik zal het hier niet allemaal opsommen.

Vervang gewoon Products met de naam van de tafel of een ander object waarover u informatie wilt krijgen.

Het gegevenstype van een kolom uit een query halen

U kunt ook het gegevenstype van de kolommen ophalen die door een query worden geretourneerd.

Zie Ontdek het gegevenstype van de kolommen die worden geretourneerd in een resultatenset in SQL Server voor meer informatie en voorbeelden.


  1. Tips voor het afstemmen van PostgreSQL-prestaties

  2. Hoe de Android-app te verbinden met de MySQL-database?

  3. Hoe krijg ik lokale gegevens in een alleen-lezen database met dplyr?

  4. Kan ik een UNIQUE-beperking aan een PostgreSQL-tabel toevoegen nadat deze al is gemaakt?