SQL Server 查詢表註釋和欄位

胡田新發表於2020-12-07

------sqlserver 查詢某個表的列名稱、說明、備註、型別等

SELECT 

    表名       = case when a.colorder=1 then d.name else '' end,

    表說明     = case when a.colorder=1 then isnull(f.value,'') else '' end,

    欄位序號   = a.colorder,

    欄位名     = a.name,

    標識       = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,

    主鍵       = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (

                     SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,

    型別       = b.name,

    佔用位元組數 = a.length,

    長度       = COLUMNPROPERTY(a.id,a.name,'PRECISION'),

    小數位數   = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),

    允許空     = case when a.isnullable=1 then '√'else '' end,

    預設值     = isnull(e.text,''),

    欄位說明   = isnull(g.[value],'')

FROM 

    syscolumns a

left join 

    systypes b 

on 

    a.xusertype=b.xusertype

inner join 

    sysobjects d 

on 

    a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'

left join 

    syscomments e 

on 

    a.cdefault=e.id

left join 

sys.extended_properties   g 

on 

    a.id=G.major_id and a.colid=g.minor_id  

left join

sys.extended_properties f

on 

    d.id=f.major_id and f.minor_id=0

where 

    d.name='表名'    --如果只查詢指定表,加上此where條件,tablename是要查詢的表名;去除where條件查詢所有的表資訊

order by 

    a.id,a.colorder


-----------------------------簡易版-----------------------

------查詢一個表的所有列名,欄位的註釋

SELECT

A.name AS table_name,

B.name AS column_name,

C.value AS column_description

FROM sys.tables A

INNER JOIN sys.columns B ON B.object_id = A.object_id

LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id

WHERE A.name = '表名'


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31486267/viewspace-2740012/,如需轉載,請註明出處,否則將追究法律責任。

相關文章