Зависит от РСУБД; SQL Server имеет sys.syscolumnsтаблицу, например.
LittleBobbyTables - Au Revoir
3
Да, но это будет отличаться в зависимости от того, какой тип СУБД вы используете - SQL - это язык, а не продукт базы данных, и этот вопрос зависит от конкретного продукта. Вы сможете найти такую информацию в INFORMATION_SCHEMA.COLUMNSтаблице - если она есть в вашей СУБД.
Мост
Ответы:
461
Использование SQL Server:
SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME ='yourTableName'AND
COLUMN_NAME ='yourColumnName'
Только если вы не хотите видеть имя соответствующего столбца. Это вернет только типы. Если вы хотите увидеть имя столбца, к
которому
5
И если ваша таблица не входит в схему по умолчанию, вы можете расширить условие с помощьюAND TABLE_SCHEMA = 'yourSchema'
luviktor
8
это здорово - но возможно ли, чтобы он возвращал диапазон для типа столбца? т.е. varchar(255)вместо varcharи int(11)вместо int?
Дон Чидл
13
@mmcrae: это возможно, используя столбец CHARACTER_MAXIMUM_LENGTHв INFORMATION_SCHEMA.COLUMNS. Просто сделайте, SELECT * FROM INFORMATION_SCHEMA.COLUMNSчтобы увидеть все доступные столбцы.
Фрэнсис П
2
Как насчет временных таблиц?
Илья Газман
77
Самый простой способ в TSQL:
SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME ='yourTableName'
Я проголосовал, поскольку это хотя и не совсем ответ, но предоставляет мне ценную информацию. Например, информация «IsComputed», которую я не нашел в информационной схеме, но могу найти в коде процедуры sp_help и скопировать оттуда.
Кристоф
2
выберите имя таблицы и нажмите Alt+F1.. дает тот же результат.
Пугал
для уточнения: имя таблицы или представления необходимо выбрать в редакторе, а затем нажать Alt+F1. Не в решении Object Explorer. Это такая полезная функция
Bugybunny
18
В TSQL / MSSQL это выглядит так:
SELECT t.name, c.name
FROM sys.tables t
JOIN sys.columns c ON t.object_id = c.object_id
JOIN sys.types y ON y.user_type_id = c.user_type_id
WHERE t.name =''
В противном случае вы имеете в виду другие СУБД, кроме MySQL?
Ламак
2
Да. DESCRIBEСинтаксис действует в Oracle , а также, однако MsSQL не будет принимать этот синтаксис.
Фестивали
Смотрите ответ от @jTC для метода на MSSQL и TSQL.
Фестивали
Более новые версии MySQL имеют information_schema.COLUMNS.
Рик Джеймс
Я считаю, что DESC OR DESCRIBE (в зависимости от используемой вами СУБД) полезен для небольших таблиц с 3 или 4 столбцами, тогда он показывает структуру таблицы с именем столбца Nullable flag и тип столбца для больших таблиц, однако для возврата результата требуется больше времени, и Труднее найти нужную вам информацию.
скорость
7
Еще один вариант с использованием MS SQL:
SELECT TYPE_NAME(system_type_id)FROM sys.columns
WHERE name ='column_name'AND[object_id]= OBJECT_ID('[dbo].[table_name]');
Чтобы извлечь фактически объявленные типы данных, например, для использования в динамическом SQL, в ALTER COLUMN, можно использовать что-то вроде этого:
В моем случае мне нужно было получить тип данных для динамического SQL (Shudder!). В любом случае, я создал функцию, которая возвращает полный тип данных. Например, вместо того, чтобы возвращать 'десятичное', оно вернет DECIMAL (18,4): dbo.GetLiteralDataType
Используйте этот запрос, чтобы получить схему, таблицу, столбец, тип, max_length, is_nullable
SELECT QUOTENAME(SCHEMA_NAME(tb.[schema_id]))AS'Schema',QUOTENAME(OBJECT_NAME(tb.[OBJECT_ID]))AS'Table',C.NAME as'Column',T.name AS'Type',C.max_length
,C.is_nullable
FROM SYS.COLUMNS C INNERJOIN SYS.TABLES tb ON tb.[object_id]= C.[object_id]INNERJOIN SYS.TYPES T ON C.system_type_id = T.user_type_id
WHERE tb.[is_ms_shipped]=0ORDERBY tb.[Name]
select columndatatype from sys.syscolumns
where referenceid =(select tableid from sys.systables
where tablename ='YOUR_TABEL_NAME'and columnname='YOUR_COLUMN_NAME')
Public Cn As ADODB.Connection
'open connection
Dim Rs As ADODB.Recordset
Set Rs = Cn.OpenSchema(adSchemaColumns, Array(Empty, Empty, UCase("Table"), UCase("field")))
'и пример (valRs - моя функция для поля rs.fields ("CHARACTER_MAXIMUM_LENGTH"). value):
sys.syscolumns
таблицу, например.INFORMATION_SCHEMA.COLUMNS
таблице - если она есть в вашей СУБД.Ответы:
Использование SQL Server:
источник
AND TABLE_SCHEMA = 'yourSchema'
varchar(255)
вместоvarchar
иint(11)
вместоint
?CHARACTER_MAXIMUM_LENGTH
вINFORMATION_SCHEMA.COLUMNS
. Просто сделайте,SELECT * FROM INFORMATION_SCHEMA.COLUMNS
чтобы увидеть все доступные столбцы.Самый простой способ в TSQL:
источник
Для SQL Server эта системная хранимая процедура будет возвращать всю информацию таблицы, включая типы данных столбцов:
источник
Alt+F1
.. дает тот же результат.Alt+F1
. Не в решении Object Explorer. Это такая полезная функцияВ TSQL / MSSQL это выглядит так:
источник
JOIN sys.types y ON y.user_type_id = c.user_type_id
system_type_id не уникален. sys.columns docв Oracle SQL вы бы сделали это:
источник
Если вы используете MySQL, вы можете попробовать
ПОКАЗАТЬ КОЛОННЫ на dev.mysql.com
В противном случае вы должны быть в состоянии сделать
источник
DESCRIBE
Синтаксис действует в Oracle , а также, однако MsSQL не будет принимать этот синтаксис.information_schema.COLUMNS
.Еще один вариант с использованием MS SQL:
источник
Использование TSQL / MSSQL
Этот запрос даст вам: имя таблицы, имя столбца, тип данных, длину типа данных и допустимые нули
Единственное, что нужно изменить, это ваше_имя_таблицы.
источник
Чтобы опираться на приведенные выше ответы, часто бывает полезно получить тип данных столбца в том же формате, в котором вам нужно объявить столбцы.
Так , например,
varchar(50)
,varchar(max)
,decimal(p, s)
.Это позволяет вам сделать это:
источник
WHEN
строку:WHEN tp.[name] IN ('varchar', 'char', 'varbinary') THEN...
Это вернет значения Имя столбца, показывая вам имена столбцов и типы данных этих столбцов (целые числа, varchars и т. Д.).
источник
Для IBM DB2 :
источник
Чтобы извлечь фактически объявленные типы данных, например, для использования в динамическом SQL, в ALTER COLUMN, можно использовать что-то вроде этого:
источник
В моем случае мне нужно было получить тип данных для динамического SQL (Shudder!). В любом случае, я создал функцию, которая возвращает полный тип данных. Например, вместо того, чтобы возвращать 'десятичное', оно вернет DECIMAL (18,4): dbo.GetLiteralDataType
источник
Использование TSQL / MSSQL
Вы можете использовать
INTO
ключевое слово.Результат
SELECT
в настоящий СТОЛПример:
select .... INTO real_table_name
После
источник
Используйте этот запрос, чтобы получить схему, таблицу, столбец, тип, max_length, is_nullable
источник
Это даст вам информацию обо всех столбцах таблицы.
источник
Для Spark SQL :
источник
Для Apache Derby, как показано в этом ответе :
источник
В vb60 вы можете сделать это:
'и пример (valRs - моя функция для поля rs.fields ("CHARACTER_MAXIMUM_LENGTH"). value):
источник
Поскольку некоторые люди спрашивали о точности и с типом данных, я хотел бы поделиться своим сценарием, который я создал для этой цели.
Это не идеально, но работает в большинстве случаев.
С помощью
Sql-Server
источник
Другой вариант для MS SQL - заменить
select
запрос здесь запросом, для которого вы хотите типы:источник