我有一个同事给我列的列表,但是这些列驻留在DB不同的表。是否有某种在Sybase工具在哪里可以查询列所属的表来?

(我试过谷歌,荷兰国际集团的这种工具,但至今没有运气)

有帮助吗?

解决方案

syscolumns中保持列元数据。

选择从syscolumns中*其中名称=;

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';

获取所有列命名为“富”表。类型=“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';

被所有列命名为 '富'。

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测试此

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top