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)

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top