【SQL Server】 フィールドの一覧

sys.sysobjects と sys.columns を使う場合。

use データベース名
select O.xtype, O.name, C.name
from sys.columns C inner join sys.sysobjects O
on C.object_id = O.id and O.xtype in('U', 'V')
order by O.xtype, O.name, C.name

sys.objects と sys.columns を使う場合。

use データベース名
select O.type, O.name, C.name
from sys.columns C inner join sys.objects O
on C.object_id = O.object_id and O. in('U', 'V')
inner join sys.types T
on C.user_type_id=T.user_type_id
order by O.type, O.name, C.name

※sysobjects にはxtype,type,id があるがobject_idが無い。
sys.objects と sys.columns と sys.types を使ってフィールド定義も見る場合。

use データベース名
select O.type, O.name, C.name, /*C.user_type_id,*/
T.name + CASE
 WHEN T.name in ('BINARY','char') THEN T.name + '(' + RTRIM(CAST(C.max_length AS char)) + ')'
 WHEN T.name in ('datetime2','datetimeoffset','time') THEN T.name+'('+RTRIM(CAST(C.scale AS char)) + ')'
 WHEN T.name in ('decimal','numeric') THEN T.name + '(' + RTRIM(CAST(C.precision AS char)) + ',' + RTRIM(CAST(C.scale AS char)) + ')'
 WHEN T.name in ('nchar','nvarchar') THEN T.name + '(' + CASE WHEN C.max_length = -1 THEN 'MAX' ELSE RTRIM(CONVERT(nchar,C.max_length/2)) END + ')'
 WHEN T.name in ('varbinary','varchar') THEN T.name + '(' + CASE WHEN C.max_length = -1 THEN 'MAX' ELSE RTRIM(CONVERT(nchar,C.max_length)) END + ')'
 ELSE ''
END AS フィールド型
from sys.columns C inner join sys.objects O
on C.object_id = O.object_id and O.type in('U', 'V')
inner join sys.types T
on C.user_type_id=T.user_type_id
order by O.type, O.name, C.name

 




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA