如何获取 sybase table 列名及其数据类型和排序依据?
How to get sybase table column name and its datatype and order by?
我的sybase数据库中有多个table。我想知道给定 table 的列名和数据类型,例如 (myOrder table)。我怎样才能做到这一点?下面是我在 Whosebug 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'
要提取类型,我正在使用这样的查询:
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'
要获取 Sybase 中 table 的列名、数据类型和更多信息,请使用以下查询。
Select * from systabcol
key join systab
where table_name = 'your_table_name'
只是为了在这里添加一个希望有用的补充,我使用 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;
您可以使用内置程序sp_columns。它将 return 所有 table 元数据,包括给定 table 的列名称、数据类型、列长度等。
sp_columns table_name
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
我的sybase数据库中有多个table。我想知道给定 table 的列名和数据类型,例如 (myOrder table)。我怎样才能做到这一点?下面是我在 Whosebug 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'
要提取类型,我正在使用这样的查询:
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'
要获取 Sybase 中 table 的列名、数据类型和更多信息,请使用以下查询。
Select * from systabcol
key join systab
where table_name = 'your_table_name'
只是为了在这里添加一个希望有用的补充,我使用 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;
您可以使用内置程序sp_columns。它将 return 所有 table 元数据,包括给定 table 的列名称、数据类型、列长度等。
sp_columns table_name
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