Как посмотреть тип данных в таблице sql
В SQL каждый столбец в таблице должен иметь определённый тип данных, указывающий на то, какая информация может храниться в этом столбце. Тип данных столбца определяет, какие операции можно выполнять с данными в этом столбце, сколько места требуется для хранения данных и как данные хранятся внутри.
В SQL есть несколько распространённых типов данных, в том числе:
- Строковый тип данных
- Числовой тип данных
- Булевый тип данных
- Дата и время
При определении таблицы в SQL важно выбрать соответствующие типы данных для каждого столбца, чтобы обеспечить эффективное хранение и извлечение данных. Кроме того, важно учитывать возможный диапазон значений, которые будут храниться в каждом столбце, и выбирать тип данных, соответствующий этому диапазону.
В следующих статьях мы детально познакомимся с каждым типом.
SQL_VARIANT_PROPERTY (Transact-SQL)
Возвращает базовый тип данных и другие сведения о значении sql_variant.
Синтаксис
SQL_VARIANT_PROPERTY ( expression , property )
Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
выражение
Выражение типа sql_variant.
свойство
Содержит имя свойства sql_variant, для которого будут предоставлены сведения. Аргумент property имеет тип varchar(128) и может принимать одно из перечисленных ниже значений.
| значение | Описание | Возвращаемый базовый тип sql_variant |
|---|---|---|
| BaseType | Тип данных SQL Server, например: |
bigint
binary
bit
char
date
datetime
datetime2
datetimeoffset
десятичное
float
int
money
nchar
numeric
nvarchar
real
smalldatetime
smallint
smallmoney
time
tinyint
uniqueidentifier
varbinary
date = 10
datetime = 23
datetime2 = 27
datetime2 (s) = 19 when s = 0, else s + 20
datetimeoffset = 34
datetimeoffset (s) = 26 when s = 0, else s + 27
smalldatetime = 16
time = 16
time (s) = 8 when s = 0, else s + 9
float = 53
real = 24
decimal и numeric = 18
decimal (p,s) и numeric (p,s) = p
money = 19
smallmoney = 10
bigint = 19
int = 10
smallint = 5
tinyint = 3
bit = 1
decimal и numeric = 0
decimal (p,s) и numeric (p,s) = s
money и smallmoney = 4
datetime = 3
datetime2 = 7
datetime2 (s) = s (0 — 7)
datetimeoffset = 7
datetimeoffset (s) = s (0 — 7)
time = 7
time (s) = s (0 — 7)
Типы возвращаемых данных
sql_variant
Примеры
А. Использование sql_variant в таблице
В приведенном ниже примере извлекаются сведения SQL_VARIANT_PROPERTY о значении colA 46279.1 , где colB = 1689 при условии, что tableA имеет colA типа sql_variant и colB .
CREATE TABLE tableA(colA sql_variant, colB int) INSERT INTO tableA values ( cast (46279.1 as decimal(8,2)), 1689) SELECT SQL_VARIANT_PROPERTY(colA,'BaseType') AS 'Base Type', SQL_VARIANT_PROPERTY(colA,'Precision') AS 'Precision', SQL_VARIANT_PROPERTY(colA,'Scale') AS 'Scale' FROM tableA WHERE colB = 1689
Результирующий набор: Обратите внимание, что каждое из этих трех значений является sql_variant.
Base Type Precision Scale --------- --------- ----- decimal 8 2 (1 row(s) affected)
B. Использование типа sql_variant в качестве переменной
В приведенном ниже примере происходит получение сведений SQL_VARIANT_PROPERTY о переменной с именем @v1.
DECLARE @v1 sql_variant; SET @v1 = 'ABC'; SELECT @v1; SELECT SQL_VARIANT_PROPERTY(@v1, 'BaseType'); SELECT SQL_VARIANT_PROPERTY(@v1, 'MaxLength');
Как узнать тип данных в столбце sql
Приведу запрос с помощью которого можно имена полей и тип данных в таблице products:
SELECT column_name, data_type FROM information_schema.columns WHERE table_schema = 'public' AND table_name = products
Как получить список и описание всех колонок в таблице Microsoft SQL Server?
В данной заметке будет рассмотрено несколько способов получения информации о столбцах таблицы в базе данных Microsoft SQL Server, например, мы научимся получать список колонок таблицы, включая их тип данных, с помощью SQL запроса.

Начну с того, что если Вам нужно просто визуально посмотреть, какие колонки или какой тип данных у той или иной колонке в таблице, то Вы для этого можете использовать графический функционал SQL Server Management Studio, а именно «Обозреватель объектов». Например, для того чтобы посмотреть информацию о столбцах таблицы, необходимо плюсиком открыть соответствующий контейнер.

Но если Вам необходимо выгрузить эту информацию или обработать ее в SQL инструкции, то в этом случае необходимо обращаться к системным объектам SQL Server с помощью языка SQL, как и к каким именно объектам обращаться мы сейчас и рассмотрим.
Примечание! Все примеры ниже мы будем рассматривать в Microsoft SQL Server 2016 Express. В базе данных создана тестовая таблица TestTable, она имеет всего три столбца.
Получаем список колонок таблицы с помощью представления информационной схемы
В Microsoft SQL Server существует специальная схема — INFORMATION_SCHEMA, которая содержит метаданные для всех объектов базы данных. В данной схеме есть представление COLUMNS, с помощью которого и можно получить информацию о колонках таблицы. Также в ней есть и другие полезные представления, о которых мы разговаривали в статье — «Представления информационной схемы Microsoft SQL Server».
А теперь допустим, нам нужно получить информацию о столбцах в таблице, например, имя столбца, тип данных и возможность принятия значения NULL, для этого мы напишем следующий запрос, в котором обратимся к представлению COLUMNS информационной схемы.
SELECT TABLE_NAME AS [Имя таблицы], COLUMN_NAME AS [Имя столбца], DATA_TYPE AS [Тип данных столбца], IS_NULLABLE AS [Значения NULL] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='TestTable'

Получаем список столбцов таблицы с помощью системного представления sys.columns
Также информацию о колонках таблицы можно получить с помощью системного представления sys.columns, но только в этом случае для получения точно такого же результата, как был выше, необходимо будет объединять несколько системных представлений, а именно sys.tables, sys.columns и sys.types, так как в представлении sys.columns есть только идентификаторы нужных нам данных.
SELECT T.name AS [Имя таблицы], C.name AS [Имя столбца], DataType.name AS [Тип данных столбца], CASE WHEN C.is_nullable = 0 THEN 'NO' ELSE 'YES' END AS [Значения NULL] FROM sys.tables T LEFT JOIN sys.columns C ON T.object_id = C.object_id LEFT JOIN sys.types DataType ON C.user_type_id = DataType.user_type_id WHERE T.name='TestTable'

Получаем список колонок таблицы с помощью системной процедуры sp_columns
В SQL Server существует специальная системная процедура sp_columns, которая как раз и предназначена для получения информации о колонках таблицы.
EXEC sp_columns TestTable

Какой из рассмотренных выше способов Вам подойдет и окажется удобней решать Вам, а у меня на этом все, удачи!
Заметка! Новичкам рекомендую посмотреть мой видеокурс по T-SQL для начинающих, с помощью него Вы «с нуля» научитесь работать с SQL и программировать на T-SQL.