Depende do RDBMS; SQL Server tem a sys.syscolumnstabela por exemplo.
LittleBobbyTables - Au Revoir
3
Sim, mas será diferente dependendo do tipo de RDBMS que você está usando - SQL é uma linguagem, não o produto de banco de dados, e essa pergunta depende do produto específico. Você poderá encontrar esse tipo de informação na INFORMATION_SCHEMA.COLUMNStabela - se o seu RDBMS tiver.
Ponte
Respostas:
461
Usando o SQL Server:
SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME ='yourTableName'AND
COLUMN_NAME ='yourColumnName'
Somente se você não quiser ver o nome da coluna correspondente. Isso retornará apenas os tipos. Se você quiser ver o nome da coluna do tipo pertence a você precisará selecionar COLUMN_NAME também ...
HackyStack
5
E se a tabela não está no esquema padrão você pode estender a condição comAND TABLE_SCHEMA = 'yourSchema'
luviktor
8
isso é ótimo - mas é possível também que ele retorne o intervalo para o tipo de coluna? ou seja, em varchar(255)vez de varchare em int(11)vez de int?
Don Cheadle
13
@mmcrae: É possível utilizar coluna CHARACTER_MAXIMUM_LENGTHem INFORMATION_SCHEMA.COLUMNS. Basta fazer um SELECT * FROM INFORMATION_SCHEMA.COLUMNSpara ver todas as colunas disponíveis.
Francis P
2
E as tabelas temporárias?
Ilya Gazman
77
A maneira mais fácil no TSQL é:
SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME ='yourTableName'
Eu votei como esta, embora não seja exatamente a resposta, mas fornece informações valiosas para mim. Por exemplo, as informações "IsComputed" que não encontrei no esquema Information, mas posso encontrar no código do procedimento sp_help e copiar a partir daí.
Christoph
2
selecione o nome da tabela e clique em Alt+F1.. fornece o mesmo resultado.
Pugal 28/09
para esclarecer: o nome da tabela ou da visualização deve ser selecionado no editor e pressione Alt+F1. Não está na solução Object Explorer. Isto é uma característica útil
bugybunny
18
No TSQL / MSSQL, ele se parece com:
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 =''
Com o contrário, você quer dizer outro RDBMS além do MySQL?
Lamak
2
Sim. A DESCRIBEsintaxe também é válida no Oracle, no entanto, o MsSQL não aceitará essa sintaxe.
Fev
Veja a resposta do @jTC para o método MSSQL e TSQL.
fimas 15/11/12
Versões mais recentes do MySQL têm information_schema.COLUMNS.
21715 Rick Rick James
Acho DESC OR DESCRIBE (dependendo do DBMS que você usa) útil para pequenas tabelas com 3 ou 4 colunas, em seguida, mostra a estrutura da tabela com o nome da coluna Sinalizador anulável e tipo de coluna para tabelas grandes, no entanto, leva mais tempo para retornar um resultado e é mais difícil encontrar as informações que você precisa.
Velocidade #
7
Outra variação usando o MS SQL:
SELECT TYPE_NAME(system_type_id)FROM sys.columns
WHERE name ='column_name'AND[object_id]= OBJECT_ID('[dbo].[table_name]');
No meu caso, eu precisava obter o tipo de dados para SQL dinâmico (Shudder!) De qualquer maneira, aqui está uma função que eu criei que retorna o tipo de dados completo. Por exemplo, em vez de retornar 'decimal', retornaria DECIMAL (18,4): dbo.GetLiteralDataType
Use esta consulta para obter Esquema, Tabela, Coluna, Tipo, 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")))
'e sample (valRs é minha função para rs.fields ("CHARACTER_MAXIMUM_LENGTH"). value):
sys.syscolumns
tabela por exemplo.INFORMATION_SCHEMA.COLUMNS
tabela - se o seu RDBMS tiver.Respostas:
Usando o SQL Server:
fonte
AND TABLE_SCHEMA = 'yourSchema'
varchar(255)
vez devarchar
e emint(11)
vez deint
?CHARACTER_MAXIMUM_LENGTH
emINFORMATION_SCHEMA.COLUMNS
. Basta fazer umSELECT * FROM INFORMATION_SCHEMA.COLUMNS
para ver todas as colunas disponíveis.A maneira mais fácil no TSQL é:
fonte
Para o SQL Server, este procedimento armazenado no sistema retornará todas as informações da tabela, incluindo os tipos de dados da coluna:
fonte
Alt+F1
.. fornece o mesmo resultado.Alt+F1
. Não está na solução Object Explorer. Isto é uma característica útilNo TSQL / MSSQL, ele se parece com:
fonte
JOIN sys.types y ON y.user_type_id = c.user_type_id
system_type_id não é exclusivo. sys.columns docno oracle SQL, você faria o seguinte:
fonte
Se você estiver usando o MySQL, você pode tentar
MOSTRAR COLUNAS em dev.mysql.com
Caso contrário, você deve ser capaz de fazer
fonte
DESCRIBE
sintaxe também é válida no Oracle, no entanto, o MsSQL não aceitará essa sintaxe.information_schema.COLUMNS
.Outra variação usando o MS SQL:
fonte
Usando TSQL / MSSQL
Esta consulta fornecerá: nome da tabela, nome da coluna, tipo de dados, comprimento do tipo de dados e nulos permitidos
A única coisa que precisa ser alterada é your_table_name.
fonte
Para desenvolver as respostas acima, geralmente é útil obter o tipo de dados da coluna no mesmo formato que você precisa para declarar colunas.
Por exemplo,
varchar(50)
,varchar(max)
,decimal(p, s)
.Isso permite que você faça isso:
fonte
WHEN
linha:WHEN tp.[name] IN ('varchar', 'char', 'varbinary') THEN...
Isso retornará os valores Nome da coluna, mostrando os nomes das colunas e os Tipos de dados dessas colunas (ints, varchars, etc.).
fonte
Para IBM DB2 :
fonte
Para recuperar os tipos de dados declarados reais, por exemplo, para uso em SQL dinâmico para ALTER COLUMNs, algo como isto pode ser usado:
fonte
No meu caso, eu precisava obter o tipo de dados para SQL dinâmico (Shudder!) De qualquer maneira, aqui está uma função que eu criei que retorna o tipo de dados completo. Por exemplo, em vez de retornar 'decimal', retornaria DECIMAL (18,4): dbo.GetLiteralDataType
fonte
Usando TSQL / MSSQL
Você pode usar a
INTO
palavra-chave.O resultado de
SELECT
em uma tabela realExemplo:
select .... INTO real_table_name
Depois de
fonte
Use esta consulta para obter Esquema, Tabela, Coluna, Tipo, max_length, is_nullable
fonte
Ele fornecerá informações sobre todas as colunas da tabela.
fonte
Para Spark SQL :
fonte
Para o Apache Derby, como mostrado nesta resposta :
fonte
No vb60, você pode fazer isso:
'e sample (valRs é minha função para rs.fields ("CHARACTER_MAXIMUM_LENGTH"). value):
fonte
Como algumas pessoas pediam a precisão e o tipo de dados, eu gostaria de compartilhar meu script que criei para esse fim.
Não é perfeito, mas funciona na maioria dos casos.
Usando
Sql-Server
fonte
Outra opção para o MS SQL é substituir a
select
consulta aqui pela consulta para a qual você deseja os tipos:fonte