sql >> Databáze >  >> RDS >> Sqlserver

3 způsoby, jak získat datový typ sloupce v SQL Server (T-SQL)

GUI jako SSMS nebo Azure Data Studio usnadňují zobrazení datového typu sloupce. Obvykle je to jednoduchá záležitost navigace do sloupce v průzkumníku objektů a datový typ vidíte hned vedle sloupce.

Ale pokud používáte T-SQL, budete muset spustit dotaz.

information_schema.columns Zobrazit

information_schema.columns zobrazení je dobrá volba, pokud chcete pouze datový typ a nic víc:

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

Ukázkový výsledek:

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

Nahraďte Products a ProductName s názvem vaší tabulky a sloupce.

OK, vrátil jsem trochu víc než jen datový typ. V případě potřeby však můžete ostatní sloupce vynechat. Nebo můžete přidat další. Existují například sloupce, které obsahují přesnost sloupce v případě, že se díváte na číselný sloupec nebo sloupec podle data a času.

Všechny sloupce můžete vrátit takto:

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

sys.columns Zobrazit

sys.columns pohled je další možností. Můžeme se k tomu připojit pomocí sys.tables zobrazení pro získání konkrétního sloupce z konkrétní tabulky:

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

Ukázkový výsledek:

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

Opět zahrňte více či méně sloupců podle potřeby.

V tomto příkladu jsem použil TYPE_NAME() funkce vrátit název datového typu na základě jeho ID. To mě zachránilo od nutnosti provádět připojení na sys.types tabulka.

sp_help Uložená procedura

sp_help uložená procedura může být užitečná, pokud chcete vrátit více informací o tabulce.

Tato uložená procedura vrací informace o databázovém objektu (jakýkoli objekt uvedený v sys.sysobjects zobrazení kompatibility), uživatelsky definovaný datový typ nebo datový typ:

EXEC sp_help Products;

To vrací hodně výstupu, takže to zde nebudu všechny vypisovat.

Stačí nahradit Products s názvem tabulky nebo jiného objektu, o kterém chcete získat informace.

Získejte datový typ sloupce z dotazu

Můžete také získat datový typ sloupců vrácených dotazem.

Další informace a příklady najdete v tématu Zjištění typu dat sloupců vrácených v sadě výsledků na serveru SQL.


  1. Jak přidat datový soubor do databáze SQL Server (T-SQL)

  2. Jak vytvořit adresář v Oracle?

  3. SQL Server Nepoužitý index

  4. Zvýraznění přístupů ve fulltextovém vyhledávání