select t.name as [table name], c.name AS [column name], tp.name AS [資料型別], case tp.name when 'bigint' then cast(c.precision as varchar(3)) when 'int' then cast(c.precision as varchar(3)) when 'smallint' then cast(c.precision as varchar(3)) when 'tinyint' then cast(c.precision as varchar(3)) when 'numeric' then '(' + cast(c.precision as varchar(3)) + ',' + cast(c.scale as varchar(3)) + ')' when 'decimal' then '(' + cast(c.precision as varchar(3)) + ',' + cast(c.scale as varchar(3)) + ')' when 'nvarchar' then cast((c.max_length/2) as varchar(5)) when 'nchar' then cast((c.max_length/2) as varchar(5)) else cast(c.max_length as varchar(5)) end as [長度], CASE WHEN c.is_nullable=1 THEN 'ok' ELSE 'no' END AS [NULL ok], ep.value as [描述] from sys.tables as t inner join sys.columns as c on t.object_id=c.object_id inner join sys.types as tp on c.system_type_id = tp.system_type_id left outer join sys.extended_properties as ep on (ep.major_id = t.object_id and ep.minor_id = c.column_id and ep.class = 1 ) where tp.system_type_id = tp.user_type_id order by t.name,c.name