码迷,mamicode.com
首页 > 数据库 > 详细

SQL动态列查询

时间:2016-11-22 02:21:32      阅读:415      评论:0      收藏:0      [点我收藏+]

标签:方便   table   tab   key   导出   nbsp   中国   使用   int   

数据库中为了实现表格数据的自由设置,我们经常设计纵表,或者列定义的表(如下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#中写更便捷,不过缺点就是依赖数据库。

SQL动态列查询

标签:方便   table   tab   key   导出   nbsp   中国   使用   int   

原文地址:http://www.cnblogs.com/stjwy/p/6087528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!