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)

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top