如何查看Sybase中的列元数据?

时间:2009-04-06 20:37:43

标签: metadata sybase sybase-ase

我有一个同事给我的列列表,但这些列位于数据库中的不同表中。在Sybase中是否有某种工具可以查询列所属的表?

(我为这种工具尝试了Google-ing,但到目前为止还没有运气)

3 个答案:

答案 0 :(得分:17)

syscolumns保存列元数据。

从syscolumns中选择*,其中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

答案 1 :(得分:3)

我必须做一些小改动才能发挥作用:

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

答案 2 :(得分:0)

您可以在以下位置找到任何列的信息:

SELECT * 
  FROM sys.syscolumns

如果您想知道列属于哪个表:

SELECT cname, tname 
  FROM sys.syscolumns
 WHERE tname IN ('col_1', 'col_2')

注意:我在Sybase ASA 9中测试它。