Как посмотреть тип данных в таблице sql
Перейти к содержимому

Как посмотреть тип данных в таблице sql

  • автор:

Как посмотреть тип данных в таблице 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, а именно «Обозреватель объектов». Например, для того чтобы посмотреть информацию о столбцах таблицы, необходимо плюсиком открыть соответствующий контейнер.

Скриншот 1

Но если Вам необходимо выгрузить эту информацию или обработать ее в 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'

Скриншот 2

Получаем список столбцов таблицы с помощью системного представления 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'

Скриншот 3

Получаем список колонок таблицы с помощью системной процедуры sp_columns

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

EXEC sp_columns TestTable

Скриншот 4

Какой из рассмотренных выше способов Вам подойдет и окажется удобней решать Вам, а у меня на этом все, удачи!

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *