zoukankan      html  css  js  c++  java
  • SQL动态列查询

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

  • 相关阅读:
    ios10 获取idfa的坑
    iOS 获取手机sim卡的运营商(移动,电信,联通) 相关信息
    iOS获取手机IP地址
    UIScrollView 与 touchesBegan 冲突解决方法
    32位与64位基础
    MySQL数据库基础_表&简单查询
    MySQL数据库基础
    Java_File、递归
    Java_lambda表达式
    Java线程锁,等待唤醒和线程池
  • 原文地址:https://www.cnblogs.com/stjwy/p/6087528.html
Copyright © 2011-2022 走看看