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

Použijte TYPE_NAME() k získání názvu datového typu na serveru SQL

V SQL Server můžete použít TYPE_NAME() funkce, která vrátí název datového typu na základě jeho ID. To může být užitečné při dotazování na systémové zobrazení, jako je sys.columns který vrací ID typu, ale ne jeho název.

Můžete použít TYPE_NAME() pro systémové datové typy a uživatelem definované datové typy.

Příklad 1 – Základní použití

Zde je základní příklad, který demonstruje, jak to funguje.

SELECT TYPE_NAME(34) AS Result;

Výsledek:

+-----------+| Výsledek ||-----------|| obrázek |+----------+

Tento výsledek nám říká, že pro obrázek je použito ID typu 34 typ.

Příklad 2 – užitečnější příklad

Zde je užitečnější příklad.

USE Music;SELECT o.name AS [Název objektu], c.name AS [Název sloupce], TYPE_NAME(c.user_type_id) AS [Type Name] FROM sys.objects AS o JOIN sys.columns AS c ON o .object_id =c.object_idWHERE o.type_desc ='USER_TABLE';

Výsledek:

+---------------+---------------+-------------+ | Název objektu | Název sloupce | Název typu ||---------------+---------------+-------------| | Umělci | ArtistId | int || Umělci | Jméno umělce | nvarchar || Umělci | AktivníOd | datum || Umělci | CountryId | int || Žánry | GenreId | int || Žánry | Žánr | nvarchar || Alba | AlbumId | int || Alba | Název alba | nvarchar || Alba | Datum vydání | datum || Alba | ArtistId | int || Alba | GenreId | int || Země | CountryId | int || Země | Země | nvarchar |+---------------+---------------+-------------+ 

Tento dotaz vrací uživatelské tabulky spolu s jejich sloupci a datovým typem pro každý sloupec.

Takto to vypadá, když odeberu TYPE_NAME() :

USE Music;SELECT o.name AS [Object Name], c.name AS [Column Name], c.user_type_id FROM sys.objects AS o JOIN sys.columns AS c ON o.object_id =c.object_idWHERE o. type_desc ='USER_TABLE';

Výsledek:

+---------------+---------------+-------------- --+| Název objektu | Název sloupce | user_type_id ||---------------+---------------+--------------- -|| Umělci | ArtistId | 56 || Umělci | Jméno umělce | 231 || Umělci | AktivníOd | 40 || Umělci | CountryId | 56 || Žánry | GenreId | 56 || Žánry | Žánr | 231 || Alba | AlbumId | 56 || Alba | Název alba | 231 || Alba | Datum vydání | 40 || Alba | ArtistId | 56 || Alba | GenreId | 56 || Země | CountryId | 56 || Země | Země | 231 |+---------------+---------------+--------------- -+

Není tak snadné přečíst ID typu.

Příklad 3 – Uživatelsky definované typy

Uživatelem definované typy jsou zahrnuty. Zde je příklad, který ve výsledcích zahrnuje uživatelem definovaný alias typu.

USE Test;SELECT o.name AS [Název objektu], c.name AS [Název sloupce], TYPE_NAME(c.user_type_id) AS [Type Name], CASE WHEN t.is_user_defined =1 THEN 'Yes' ELSE ' Ne' KONEC JAKO [definováno uživatelem?]FROM sys.objects AS o PŘIPOJIT sys.columns AS c ON o.object_id =c.object_idJOIN sys.types t ON c.user_type_id =t.user_type_idWHERE o.type_desc ='USER_TABLE'AND o .name ='Klient';

Výsledek:

+---------------+---------------+-------------+ ------------------+| Název objektu | Název sloupce | Typ Název | Definováno uživatelem? ||---------------+---------------+-------------+-- ----------------|| Klient | Kód klienta | klientský kód | Ano || Klient | Jméno | varchar | Ne || Klient | Příjmení | varchar | Ne |+---------------+---------------+-------------+- ----------------+

Příklad 4 – Použití TYPE_NAME() v klauzuli WHERE

Můžete použít TYPE_NAME() (a jakékoli další systémové funkce) v WHERE klauzule (a kdekoli je povolen výraz).

Zde upravím předchozí příklad tak, že použiji TYPE_NAME() v WHERE doložka.

USE Test;SELECT o.name AS [Název objektu], c.name AS [Název sloupce], TYPE_NAME(c.user_type_id) AS [Type Name], CASE WHEN t.is_user_defined =1 THEN 'Yes' ELSE ' Ne' END AS [Definováno uživatelem?]FROM sys.objects AS o JOIN sys.columns AS c ON o.object_id =c.object_idJOIN sys.types t ON c.user_type_id =t.user_type_idWHERE TYPE_NAME(c.user_type_id) =' ';

Výsledek:

+---------------+---------------+-------------+ ------------------+| Název objektu | Název sloupce | Typ Název | Definováno uživatelem? ||---------------+---------------+-------------+-- ----------------|| Klient | Kód klienta | klientský kód | Ano |+---------------+---------------+-------------+- ----------------+

Příklad 5 – Neplatné ID typu nebo nedostatečné oprávnění

Pokud zadáte neplatné ID typu nebo nemáte dostatečné oprávnění k odkazování na typ, bude výsledek NULL.

SELECT TYPE_NAME(258) AS Result;

Výsledek:

+-----------+| Výsledek ||-----------|| NULL |+----------+

Získejte ID typu

Pokud již znáte název datového typu, ale chcete jeho ID, můžete použít TYPE_ID() vrátit ID datového typu na základě jeho názvu.


  1. Seznam prvků formátu Datetime v Oracle

  2. MariaDB JSON_QUOTE() Vysvětleno

  3. Hledání posledního indexu řetězce v Oracle

  4. Sjednocení serveru SQL, ale udržujte pořádek