1. 程式人生 > >SQL Server 下讀取 表/欄位 的說明備註資訊

SQL Server 下讀取 表/欄位 的說明備註資訊

結果程式碼是: 建表後,設定表/欄位的註釋資訊。

下面是 讀取表/欄位 的說明備註 的 SQL 語句。


獲取資料庫表清單:
select top 1000 
  ROW_NUMBER() OVER (ORDER BY a.object_id) AS No,  
  a.name AS 表名, 
  isnull(g.[value],'-') AS 說明
from 
  sys.tables a left join sys.extended_properties g 
  on (a.object_id = g.major_id AND g.minor_id = 0)

No 表名 說明
1 test_table 測試表
2 test_main -

獲取資料庫表的欄位清單 [這裡是檢視 test_table 表的欄位]
SELECT
  a.column_id AS No,
  a.name AS 列名,
  isnull(g.[value],'-') AS 說明
FROM
  sys.columns a left join sys.extended_properties g
 on (a.object_id = g.major_id AND g.minor_id = a.column_id)
WHERE
  object_id =
    (SELECT object_id FROM sys.tables WHERE name = 'test_table')

No 列名 說明
1 Test_ID 主鍵(自增長)
2 Test_Key 種類
3 Test_Value 數值
4 Test_Type 內部型別
5 Test_BelongTo 從屬關係
6 Test_Grade 等級
7 Test_Remark 備註
8 Test_Visible 是否可見

-----

更加詳細一點的資訊


SELECT
   col.name AS 列名,
   typ.name as 資料型別,
   col.max_length AS 佔用位元組數,
   col.precision AS 數字長度,
   col.scale AS 小數位數,
   col.is_nullable  AS 是否允許非空,
   col.is_identity  AS 是否自增,
   case when exists 
      ( SELECT 1 
        FROM 
          sys.indexes idx 
            join sys.index_columns idxCol 
            on (idx.object_id = idxCol.object_id)
         WHERE
            idx.object_id = col.object_id
            AND idxCol.index_column_id = col.column_id 
            AND idx.is_primary_key = 1
       ) THEN 1 ELSE 0 END  AS 是否是主鍵
FROM
  sys.columns col left join sys.types typ on (col.system_type_id = typ.system_type_id)
WHERE
  col.object_id =
(SELECT object_id FROM sys.tables WHERE name = 'test_table')

SQL Server 2005 的 Microsoft SQL Server Management Studio Express

沒有 帶列名一起復制。 湊合著看看吧,就不手動寫列名了。

Test_ID    int    4    10    0    0    1    1    主鍵(自增長)
Test_Key    varchar    10    0    0    0    0    0    種類
Test_Value    varchar    20    0    0    0    0    0    數值
Test_Type    int    4    10    0    0    0    0    內部型別
Test_BelongTo    int    4    10    0    1    0    0    從屬關係
Test_Grade    int    4    10    0    1    0    0    等級
Test_Remark    varchar    50    0    0    1    0    0    備註
Test_Visible    bit    1    1    0    1    0    0    是否可見