/
Вопросы и ответы
/
SQL
/

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

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

5 лет назад

Человек-Молекула

Ответы

1

Приведу запрос с помощью которого можно имена полей и тип данных в таблице products:

1
2
SELECT column_name, data_type FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = products

4 года назад

Roman Ashikov

0

ф

4 года назад

Artem S.

0

Типы столбцов хранятся в системной схеме information_schema. Запрос работает в PostgreSQL, MySQL и SQL Server:

1
2
3
4
SELECT column_name, data_type, character_maximum_length, is_nullable
FROM information_schema.columns
WHERE table_name = 'products'
ORDER BY ordinal_position;

Результат:

column_namedata_typecharacter_maximum_lengthis_nullable
idintegerNO
titlecharacter varying255NO
pricenumericYES

Если таблицы с одинаковым именем есть в разных схемах, добавьте условие AND table_schema = 'public'. В MySQL схема — это имя базы.

Короткие команды в консоли

СУБДКоманда
PostgreSQL (psql)\d products
MySQLDESCRIBE products;
SQLitePRAGMA table_info(products);
SQL ServerEXEC sp_help 'products';
OracleDESC products

Тип конкретного значения

В PostgreSQL функция pg_typeof() показывает тип выражения:

1
2
3
4
SELECT pg_typeof(price), pg_typeof(price * 1.5), pg_typeof(now())
FROM products
LIMIT 1;
-- numeric | numeric | timestamp with time zone

Удобно, когда непонятно, во что превратится результат вычисления.

В SQLite тип хранится у каждого значения: SELECT typeof(price) FROM products;.

Точный тип с параметрами в PostgreSQL

information_schema показывает numeric без точности и character varying без длины в одном поле. Полное объявление вроде numeric(10,2) возвращает format_type:

1
2
3
4
5
SELECT a.attname, format_type(a.atttypid, a.atttypmod)
FROM pg_attribute a
WHERE a.attrelid = 'products'::regclass
  AND a.attnum > 0
  AND NOT a.attisdropped;

В графическом клиенте

В DBeaver и pgAdmin типы видны на вкладке Columns или Свойства таблицы.

Типы данных и структуру таблиц разбирают в бесплатном курсе «Основы SQL».

7 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845