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'
タイプを抽出するには、私はそのようなクエリを使用しています:
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'
組み込みプロシージャsp_columnsを使用できます。指定されたテーブルの列名、データ型、列の長さなど、すべてのテーブルメタデータを返します。
sp_columns table_name
ここに期待どおりに役立つ追加を追加するために、私は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;
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