7

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

(我试过用谷歌搜索这种工具,但到目前为止还没有运气)

4

3 回答 3

18

syscolumns 保存列元数据。

select * from syscolumns where name = ;

syscolumns 中的 id 列是该列的表的 id,在 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';

获取名为“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

于 2009-04-06T23:01:37.640 回答
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
于 2012-02-07T22:44:01.597 回答
0

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

SELECT * 
  FROM sys.syscolumns

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

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

注意:我在 Sybase ASA 9 中对此进行了测试。

于 2015-06-18T22:06:58.830 回答