質問

私は同僚が私に与えられた列のリストを持っているが、これらの列は、DB内の別のテーブルに存在します。私は、列が属するテーブルを照会することができSybaseの中のツールのいくつかの種類がありますか?

(私はツールのこの種のためにGoogleが-INGの試みたが、きたこれまでのところ運)

役に立ちましたか?

解決

SYSCOLUMNSは、列のメタデータを保持します。

のsyscolumnsから選択*どこ名=;

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」という名前のテーブルのすべての列を取得します。タイプ=ユーザ・テーブルに「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の最新バージョンではなくsysbojectssystablesを使用します。

他のヒント

私はそれを動作させるためにいくつかの小さな変更をしなければならなかった。

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でこれをテストする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top