Come faccio guardo colonna di metadati in Sybase?
-
05-09-2019 - |
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)
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