Database 如何获取sybase表的列名及其数据类型和顺序?
我的sybase数据库中有多个表。我想知道给定表的列名和数据类型,比如(myOrder表)。我该怎么做?下面是我在stackoverflow上找到的脚本。但这给了我一个异常Database 如何获取sybase表的列名及其数据类型和顺序?,database,sybase,Database,Sybase,我的sybase数据库中有多个表。我想知道给定表的列名和数据类型,比如(myOrder表)。我该怎么做?下面是我在stackoverflow上找到的脚本。但这给了我一个异常syscolumns是不明确的?下面是我用于此的脚本 SELECT sc.* FROM syscolumns sc INNER JOIN sysobjects so ON sc.id = so.id WHERE so.name = 'my_table_name' 要提取我正在使用的类型,请执行以下查询: SELECT sy
syscolumns是不明确的
?下面是我用于此的脚本
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中获取表的列名、数据类型和更多信息,请使用以下查询
Select * from systabcol
key join systab
where table_name = 'your_table_name'
为了在这里添加一个有用的补充,我使用了Sybase的SQLAnywhere 12,因此syscolumns对象(视图)与Sybase的其他版本不包含相同的信息,因此需要加入命名信息。然而,这种被称为“整合视图”的视图本身几乎完全可以() 事实上,我们使用它来检查所有表中列的更改,作为QA工具,类似于:
Select *
From sys.syscolumns
Where (cname Like '%trk%' Or cname Like '%track%')
And cname not like '%ontrack%'
Order By tname;
您可以使用内置的过程sp_列。它将返回给定表的所有表元数据,包括列名、数据类型、列长度等
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
这是错误的。您没有以这种方式加载所有列。例如,尝试查询sysobjects表的列并与Sybase Central进行比较。JOIN必须是“LEFT JOIN”。@mega是否可以在syscloumns中有一个在sysobjects中没有条目的条目?这里的问题不在于对象,而在于类型。Sybase列可以是Java类的类型,由xtype成员定义。您错误地确定了列的类型,因此会丢失这些列。我在上面举了一个例子。此外,当您想要获取列时请求对象是错误的,这是一个逻辑错误。此查询不会返回所有列。检查@mega响应。