如何获取sybase表列名及其数据类型和顺序?

时间:2015-03-09 06:13:43

标签: database sybase

我的sybase数据库中有多个表。我想知道给定表的列名和数据类型,如(myOrder表)。我怎样才能做到这一点?我在stackoverflow From a Sybase Database, how I can get table description ( field names and types)? 上找到了以下脚本。但这给了我例外syscolumns is ambiguous?脚本低于我用于此的脚本。

SELECT sc.* 
FROM syscolumns sc
INNER JOIN sysobjects so ON sc.id = so.id
WHERE so.name = 'my_table_name'

5 个答案:

答案 0 :(得分:10)

要提取我正在使用此类查询的类型:

SELECT syscolumns.name, systypes.name FROM sysobjects 
JOIN syscolumns ON sysobjects.id = syscolumns.id
JOIN systypes ON systypes.type = syscolumns.type AND systypes.usertype = syscolumns.usertype
WHERE sysobjects.name LIKE 'my_table' 

答案 1 :(得分:3)

要获取Sybase中表的列名,数据类型和更多信息,请使用以下查询。

Select * from systabcol
key join systab
 where table_name = 'your_table_name'

答案 2 :(得分:2)

您可以使用内置过程sp_columns。它将返回给定表的所有表元数据,包括列名,数据类型,列长等。

sp_columns table_name

答案 3 :(得分:0)

为了在这里添加一个有希望的有用的补充,我使用Sybase的SQL Anywhere 12,因此,syscolumns对象(视图)与其他版本的Sybase不具有相同的信息,因此需要加入命名信息。但是,这个统一视图,就像它所谓的,几乎完全有能力(see it's documentation here)。

我们实际上使用它来检查所有表中列的更改,作为QA工具,类似于:

Select * 
    From sys.syscolumns 
    Where (cname Like '%trk%' Or cname Like '%track%') 
    And cname not like '%ontrack%' 
    Order By tname;

答案 4 :(得分:0)

Sybase Central获得如下列:

select
    col.name,
    isnull(xt.xtname, isnull(get_xtypename(col.xtype, col.xdbid), t.name))
from
    syscolumns col
join
    sysobjects obj
on
    col.id = obj.id
left outer join
    systypes t
on
    col.usertype = t.usertype
left outer join
    sysxtypes xt
on
    col.xtype = xt.xtid
where
    obj.name like 'sysobjects'
order by
    col.colid