Wie sehe ich in Spalte Metadaten in Sybase?
-
05-09-2019 - |
Frage
Ich habe eine Liste von Spalten ein Mitarbeiter zu mir gegeben hat, aber diese Spalten befinden sich in unterschiedlichen Tabellen in der DB. Gibt es irgendeine Art von Werkzeug in Sybase, wo ich die Tabelle eine Spalte gehört abfragen kann?
(Ich habe versucht, für diese Art von Werkzeug-Google ing, aber kein Glück so weit)
Lösung
syscolumns hält Spalte Metadaten.
select * from syscolumns where name =;
Die Spalte id in syscolumns ist die ID der Tabellenspalte, 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';
erhält alle Spalten für die Tabelle mit dem Namen ‚foo‘. Der Typ = ‚U‘ Grenzen es zu Benutzertabellen.
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';
werden alle Spalten namens 'foo'.
Die aktuelle Version von ASE wird sysbojects
statt systables
verwenden
Andere Tipps
Ich musste ein paar kleine Änderungen vornehmen, damit es funktioniert:
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
Sie können die Informationen für jede Spalte finden in:
SELECT *
FROM sys.syscolumns
Wenn Sie wollen wissen, auf welche Tabelle eine Spalte gehört:
SELECT cname, tname
FROM sys.syscolumns
WHERE tname IN ('col_1', 'col_2')
. HINWEIS: Ich teste diese in Sybase ASA 9