Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

3 начина да получите типа данни на колона в SQL Server (T-SQL)

GUI като SSMS или Azure Data Studio улесняват виждането на типа данни на колоната. Обикновено е лесно да отидете до колоната в изследователя на обекти и можете да видите типа данни точно до колоната.

Но ако използвате T-SQL, ще трябва да изпълните заявка.

information_schema.columns Преглед

information_schema.columns изгледът е добра опция, ако просто искате типа данни и не повече:

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

Примерен резултат:

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

Заменете Products и ProductName с името на вашата таблица и колона съответно.

Добре, върнах малко повече от просто типа данни тук. Но можете да пропуснете другите колони, ако е необходимо. Или можете да добавите още. Например има колони, които съдържат прецизността на колоната, в случай че гледате колона с число или дата и час.

Можете да върнете всички колони по следния начин:

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

sys.columns Преглед

sys.columns оглед е друга опция. Можем да се присъединим към това с sys.tables изглед, за да получите конкретна колона от конкретна таблица:

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

Примерен резултат:

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

Отново включете повече или по-малко колони според изискванията.

В този пример използвах TYPE_NAME() функция за връщане на името на типа данни въз основа на неговия идентификатор. Това ме спаси от необходимостта да правя присъединяване към sys.types таблица.

sp_help Съхранена процедура

sp_help съхранената процедура може да бъде полезна, ако искате да върнете повече информация за таблицата.

Тази съхранена процедура връща информация за обект на база данни (всеки обект, изброен в sys.sysobjects изглед за съвместимост), дефиниран от потребителя тип данни или тип данни:

EXEC sp_help Products;

Това връща много резултати, така че няма да изброявам всичко тук.

Просто заменете Products с името на таблицата или друг обект, за който искате да получите информация.

Вземете типа данни на колона от заявка

Можете също да получите типа данни на колоните, върнати от заявка.

Вижте Разберете типа данни на колоните, върнати в набор от резултати в SQL Server за повече информация и примери.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ПОРЪЧАЙТЕ ПО ДАТА, като първо се показват NULL, след това най-новите дати

  2. какъв е проблемът с AttachDbFilename

  3. Не използвайте sp_depends в SQL Server (оттеглен е)

  4. TSQL md5 хеш, различен от C# .NET md5

  5. @@ГРЕШКА и/или ОПИТ - ХВАНЕ