1. 程式人生 > >SQL獲取SQL Server 根據表名獲取表的所有列及屬性

SQL獲取SQL Server 根據表名獲取表的所有列及屬性

select
     c.name as [欄位名],t.name as [欄位型別]
     ,convert(bit,c.IsNullable)  as [可否為空]
     ,convert(bit,case when exists(select 1 from sysobjects where xtype='PK' and parent_obj=c.id and name in (
         select name from sysindexes where indid in(
             select indid from sysindexkeys where id 
= c.id and colid=c.colid))) then 1 else 0 end
                 as [是否主鍵]
     ,convert(bit,COLUMNPROPERTY(c.id,c.name,'IsIdentity')) as [自動增長]
     ,c.Length as [佔用位元組] 
     ,COLUMNPROPERTY(c.id,c.name,'PRECISION'as [長度]
     ,isnull(COLUMNPROPERTY(c.id,c.name,'Scale'),0as [小數位數]
     ,ISNULL(CM.text
,''as [預設值]
     ,isnull(ETP.value,''AS [欄位描述]
     --,ROW_NUMBER() OVER (ORDER BY C.name) AS [Row]from syscolumns c
inner join systypes t on c.xusertype = t.xusertype 
left join sys.extended_properties ETP on ETP.major_id = c.id and ETP.minor_id = c.colid and ETP.name ='MS_Description' 
left join syscomments CM 
on c.cdefault=CM.id
where c.id = object_id('表名')