『壹』 sql語句怎麼查詢指定表的列名
如果用mysql 的話 mysql> desc 表名
『貳』 請教sql語句如何取得一個表中的列名,數據類型,及長度
sql server 的 系統存儲過程 sp_help,可以直接獲取
例: sp_help a ,獲取表a的結構及自增ID狀態等等。

『叄』 SQL 如何根據指定值獲取列名
insert into 表(T1) 
select 
   case when 欄位1 = 1 then '欄位1,' else '' end +
   case when 欄位2 = 1 then '欄位2,' else '' end +
   case when 欄位3 = 1 then '欄位3,' else '' end +
   ...
   case when 欄位20 = 1 then '欄位20,' else '' end
   as T1
from 表
『肆』 Sql 語句。獲取指定表的列名
--isnull函數:需要個參數,如果第一個參數為空,則賦值第二個參數。
SELECT
--空格代表as關鍵字
        ( CASE WHEN a.colorder = 1 THEN d.name
               ELSE ''
          END ) 表名 ,
        a.colorder 欄位序號 ,
        a.name 欄位名 ,
        ( CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√'
               ELSE ''
          END ) 標識 ,
        ( CASE WHEN ( SELECT    COUNT(*)
                      FROM      sysobjects
                      WHERE     ( name IN (
                                  SELECT    name
                                  FROM      sysindexes
                                  WHERE     ( id = a.id )
                                            AND ( indid IN (
                                                  SELECT    indid
                                                  FROM      sysindexkeys
                                                  WHERE     ( id = a.id )
                                                            AND ( colid IN (
                                                              SELECT
                                                              colid
                                                              FROM
                                                              syscolumns
                                                              WHERE
                                                              ( id = a.id )
                                                              AND ( name = a.name ) ) ) ) ) ) )
                                AND ( xtype = 'PK' )
                    ) > 0 THEN 'true'
               ELSE 'false'
          END ) 主鍵 ,
        b.name 類型 ,
        a.length 佔用位元組數 ,
        COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 長度 ,
        ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小數位數 ,
        ( CASE WHEN a.isnullable = 1 THEN 'true'
               ELSE 'false'
          END ) 允許空 ,
        ISNULL(e.text, '') 默認值 ,
        ISNULL(g.[value], '') AS 欄位說明
--a代表列集合表:為每個表和視圖中的每列返回一行,並為資料庫中的存儲過程的每個參數返回一行
--b代表列類型表:為資料庫中定義的每種系統提供的數據類型和每種用戶定義的數據類型返回一行。
FROM    syscolumns a
        LEFT JOIN systypes b ON a.xtype = b.xusertype
--d代表對象表:在資料庫中創建的每個對象(例如約束、默認值、日誌、規則以及存儲過程)都對應一行
        INNER JOIN sysobjects d ON a.id = d.id
                                   AND d.xtype = 'U'
                                   AND d.name <> 'dtproperties'
--e代表e.text是默認值:包含資料庫中每個視圖、規則、默認值、觸發器、CHECK 約束、DEFAULT 約束和存儲過程的項
        LEFT JOIN syscomments e ON a.cdefault = e.id
--g代表g.[value]是欄位說明:針對當前資料庫中的每個擴展屬性返回一行。
        LEFT JOIN sys.extended_properties g ON a.id = g.major_id
                                               AND a.colid = g.major_id
ORDER BY a.id ,
        a.colorder
這個方法可以獲取當前庫存中所有表的所有列。希望對你有用。
