web-dev-qa-db-ja.com

sybaseテーブルの列名とそのデータ型を取得して並べ替える方法

Sybaseデータベースに複数のテーブルがあります。 (myOrderテーブル)のような特定のテーブルの列名とデータ型を知りたいです。これどうやってするの? stackoverflowで見つけたスクリプトの下 Sybaseデータベースから、テーブルの説明(フィールド名とタイプ)を取得するにはどうすればよいですか? 。しかし、これは私に例外を与えますsyscolumns is ambiguous?このスクリプトは、これに使用したスクリプトの下にあります。

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

タイプを抽出するには、私はそのようなクエリを使用しています:

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' 
11
www

Sybaseのテーブルの列名、データ型、およびより多くの情報を取得するには、次のクエリを使用します。

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

組み込みプロシージャsp_columnsを使用できます。指定されたテーブルの列名、データ型、列の長さなど、すべてのテーブルメタデータを返します。

sp_columns table_name
2
hui chen

ここに期待どおりに役立つ追加を追加するために、私はSybaseのSQL Anywhere 12を使用しています。そのため、syscolumnsオブジェクト(ビュー)は他のバージョンのSybaseと同じ情報を保持しないため、名前付き情報に参加する必要があります。ただし、この統合ビューは、それ自体、ほぼ完全に機能します( ドキュメントを参照 )。

実際、これを次のようなQAツールとして、すべてのテーブルの列の変更をチェックするために使用します。

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

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
0
mega