同僚から提供された列のリストがありますが、これらの列は DB の別のテーブルに存在します。列が属するテーブルを照会できる Sybase のツールはありますか?
(この種のツールを Google で調べてみましたが、今のところうまくいきません)
syscolumnsは列のメタデータを保持します。
select * from syscolumns where name =;
syscolumnsのid列は、sysobjectsの列のテーブルのIDです。
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';
'foo'という名前のテーブルのすべての列を取得します。type ='U'は、ユーザーテーブルに制限します。
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';
'foo'という名前のすべての列を取得します。
ASEの最新バージョンはsysbojects
代わりにを使用しますsystables
それが機能するために、私はいくつかの小さな変更を加える必要がありました:
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
列の情報は次の場所にあります。
SELECT *
FROM sys.syscolumns
列が属するテーブルを知りたい場合:
SELECT cname, tname
FROM sys.syscolumns
WHERE tname IN ('col_1', 'col_2')
注: これは Sybase ASA 9 でテストしています。