如何查看 Sybase 中的列元数据?
Posted
技术标签:
【中文标题】如何查看 Sybase 中的列元数据?【英文标题】:How do I look at column metadata in Sybase? 【发布时间】:2010-10-17 21:51:34 【问题描述】:我有一个同事给我的列列表,但这些列位于数据库的不同表中。 Sybase 中是否有某种工具可以查询列所属的表?
(我已经尝试用谷歌搜索这种工具,但到目前为止没有运气)
【问题讨论】:
【参考方案1】: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
【讨论】:
谢谢!是的,这实际上有帮助。我还找到了一张 Sybase ASE 图表,可以将您的答案可视化:download.sybase.com/pdfdocs/asg1250e/poster.pdf 在更高版本的 Sybase 中需要使用 sysobjects 而不是 systables 我尝试从 syscolumns 中选择 *,但我的表格中没有一个列显示 如果您已经知道表名 sp_help tableName 将提供包括列名在内的表详细信息。【参考方案2】:我必须做一些小改动才能让它工作:
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
【讨论】:
我猜你的意思是 b.name != 'bar'【参考方案3】:您可以在以下位置找到任何列的信息:
SELECT *
FROM sys.syscolumns
如果你想知道一列属于哪个表:
SELECT cname, tname
FROM sys.syscolumns
WHERE tname IN ('col_1', 'col_2')
注意:我在 Sybase ASA 9 中对此进行了测试。
【讨论】:
以上是关于如何查看 Sybase 中的列元数据?的主要内容,如果未能解决你的问题,请参考以下文章