文章出處

數據庫中為了實現表格數據的自由設置,我們經常設計縱表,或者列定義的表(如下KeyValue),定義一個列超級多的表中每個字段的意義。
但是在設計時簡單的東西卻很容易被人們忘記,如下一個簡單但是很松散的列表查詢。

 

--CREATE TABLE KeyValue
--(
--[key] NVARCHAR(50) ,
--[value] NVARCHAR(50)
--)

CREATE TABLE TableNumber
(
Name NVARCHAR(50),
Filed1 NVARCHAR(50),
Filed2 NVARCHAR(50),
Filed3 NVARCHAR(50),
Filed4 NVARCHAR(50),
Filed5 NVARCHAR(50),
)
INSERT INTO dbo.TableNumber
        ( Name ,
          Filed1 ,
          Filed2 ,
          Filed3 ,
          Filed4 ,
          Filed5
        )
VALUES  ( N'張三2' , -- Name - nvarchar(50)
          N'中國2' , -- Filed1 - nvarchar(50)
          N'河北2' , -- Filed2 - nvarchar(50)
          N'唐山2' , -- Filed3 - nvarchar(50)
          N'' , -- Filed4 - nvarchar(50)
          N''  -- Filed5 - nvarchar(50)
        )

INSERT INTO KeyValue VALUES('Filed1','國家')
INSERT INTO KeyValue VALUES('Filed2','')
INSERT INTO KeyValue VALUES('Filed3','')


DECLARE @msg NVARCHAR(max)=''
SELECT @msg=@msg+','+[key]+' as '+value  FROM KeyValue 

SET @msg='Name as 名稱'+@msg;

DECLARE @sql NVARCHAR(max);
SET @sql='select '+@msg +' from TableNumber'

EXEC( @sql)

 

這種設計可用于自定義列表查詢,EXCEL導出,很方便,使用起來比在C#中寫更便捷,不過缺點就是依賴數據庫。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()