Domanda

Ho una lista di colonne un collega ha dato a me, ma queste colonne risiedono in diverse tabelle del DB. C'è una sorta di strumento in Sybase dove posso interrogare la tabella una colonna appartiene?

(ho provato Google-zione di questo tipo di strumento, ma senza fortuna finora)

È stato utile?

Soluzione

syscolumns stive metadati della colonna.

select * from syscolumns dove name =;

La colonna id nella syscolumns è l'id del tavolo della colonna, in 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';

ottiene tutte le colonne per la tabella denominata 'foo'. Il tipo = 'U' la limita alle tabelle utente.

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';

ottiene tutte le colonne di nome 'foo'.

La maggior parte versione corrente di ASE utilizzerà sysbojects al posto di systables

Altri suggerimenti

ho dovuto fare qualche piccola modifica per farlo funzionare:

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

È possibile trovare le informazioni per qualsiasi colonna in:

SELECT * 
  FROM sys.syscolumns

Se si vuole sapere in quale tavolo una colonna appartiene:

SELECT cname, tname 
  FROM sys.syscolumns
 WHERE tname IN ('col_1', 'col_2')

. NOTA: I test in questo Sybase ASA 9

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top