Preciso escrever uma consulta no SQL Server para obter a lista de colunas em uma tabela específica, seus tipos de dados associados (com comprimento) e se não forem nulos. E eu consegui fazer isso muito.
Mas agora eu também preciso obter, na mesma tabela, uma coluna - TRUE
se essa coluna for uma chave primária.
Como eu faço isso?
Minha saída esperada é:
Column name | Data type | Length | isnull | Pk
sql
sql-server
sql-server-2005
Shrayas
fonte
fonte
Respostas:
Para evitar linhas duplicadas para algumas colunas, use user_type_id em vez de system_type_id.
Apenas substitua
YourTableName
pelo nome da tabela atual - funciona para o SQL Server 2005 e versões posteriores.Caso esteja usando esquemas, substitua
YourTableName
porYourSchemaName.YourTableName
ondeYourSchemaName
está o nome do esquema real eYourTableName
o nome da tabela real.fonte
LEFT OUTER JOIN sys.index_columns ic LEFT OUTER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id ON ic.object_id = c.object_id AND ic.column_id = c.column_id AND i.is_primary_key=1
O procedimento armazenado sp_columns retorna informações detalhadas da tabela.
fonte
Você pode usar a consulta:
para obter todos os metadados necessários, exceto as informações de Pk.
fonte
No SQL 2012, você pode usar:
Isso fornecerá os nomes das colunas, juntamente com suas propriedades.
fonte
Tente o seguinte:
fonte
Para garantir que você obtenha o comprimento certo, seria necessário considerar os tipos unicode como um caso especial. Veja o código abaixo.
Para obter mais informações, consulte: https://msdn.microsoft.com/en-us/library/ms176106.aspx
fonte
Expandindo a resposta de Alex, você pode fazer isso para obter a restrição PK
Devo ter perdido que você deseja que um sinalizador determine se a coluna especificada fazia parte da PK em vez do nome da restrição PK. Para isso você usaria:
fonte
Com o nome da tabela no editor de consultas, selecione o nome e pressione Alt + F1 e ele trará todas as informações da tabela.
fonte
Execute
SELECT *
na instrução acima para ver o que information_schema.columns retorna.Esta pergunta foi respondida anteriormente - https://stackoverflow.com/a/11268456/6169225
fonte
Estou um pouco surpreso que ninguém mencionou
fonte
fonte
Jogando outra resposta no ringue, você fornecerá essas colunas e muito mais:
fonte
Para pesquisar qual coluna está em qual tabela, com base no seu tipo de dados de pesquisa, encontra três tabelas diferentes em um banco de dados. Esta consulta é expansível para 'n' tabelas.
fonte
Encontre resultado combinado para Tipo de dados e Comprimento e é anulável na forma de "NULL" e "Não nulo" Use a consulta abaixo.
você encontrará o resultado como mostrado abaixo.
Obrigado.
fonte
fonte
NOTA: EM ALGUM IDE, ANTES DE SELECIONAR N, ESTÁ FUNCIONANDO OU, EM ALGUM IDE, SEM N, ESTÁ FUNCIONANDO
fonte
Não há chave primária aqui, mas isso pode ajudar outros usuários que gostariam de ter um nome de tabela com o nome do campo e as propriedades básicas do campo
fonte
Acabei de fazer a marc_s "apresentação pronta":
fonte