Como posso olhar para metadados de coluna em Sybase?
-
05-09-2019 - |
Pergunta
Eu tenho uma lista de colunas de um colega de trabalho tem dado a mim, mas estas colunas residir em diferentes tabelas no DB. Existe algum tipo de ferramenta no Sybase onde posso consultar a tabela uma coluna pertence?
(Eu tentei Google-ing para este tipo de ferramenta, mas sem sorte até agora)
Solução
syscolumns mantém metadados de coluna.
SELECT * FROM syscolumns onde name =;
A coluna id no syscolumns é o id da tabela da coluna, em sysobjects;
select b.name as tablename, a.name as columnname
from syscolumns a join systables b on (a.id = b.id)
where b.type='U' and b.name = 'foo';
recebe todas as colunas para a tabela chamada 'foo'. O type = 'U' limita a tabelas de usuário.
select b.name as tablename, a.name as columnname
from syscolumns a join systables b on (a.id = b.id)
where b.type='U' and a.name = 'foo';
recebe todas as colunas chamadas 'foo'.
A maioria versão atual do ASE usará sysbojects
vez de systables
Outras dicas
Eu tive que fazer algumas pequenas mudanças para que ele funcione:
select b.name as tablename,
a.name as columnname
from dbo.syscolumns a
join sysobjects b on a.id = b.id
where b.type='U'
and upper(a.name) like '%FOO%' -- wildcard search for column name
and b.name = 'bar' -- exclude tables
order by b.name
Você pode encontrar as informações para qualquer coluna em:
SELECT *
FROM sys.syscolumns
Se você quiser saber para qual tabela uma coluna pertence:
SELECT cname, tname
FROM sys.syscolumns
WHERE tname IN ('col_1', 'col_2')
. NOTA: eu testar isso em Sybase ASA 9