加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用动态SQL通过向简单的sql查询添加变量来指定列名

发布时间:2021-02-22 04:05:01 所属栏目:MsSql教程 来源:网络整理
导读:sql 2005 / sql 2008 Declare @temp nvarchar(1000)set @temp = 'ABC'select col1,col2 from tableA 与select查询一起,如何向select查询添加变量? expected output :-select col1,col2,@temp as [col3] from tableA 其中@temp指定tableA中列的名称. 解决

sql 2005 / sql 2008

Declare @temp nvarchar(1000)

set @temp = 'ABC'


select col1,col2 from tableA

与select查询一起,如何向select查询添加变量?

expected output :-

select col1,col2,@temp as [col3] from tableA

其中@temp指定tableA中列的名称.

解决方法

如果您尝试动态指定列名,可以查看执行动态sql.但是,您应该首先了解这种方法的危险性:

http://www.sommarskog.se/dynamic_sql.html

在该页面中,有一个示例显示动态指定表名称 – 您可以更改它,以便它动态指定列名称:

CREATE PROCEDURE general_select @tblname nvarchar(128),@key     varchar(10),@debug   bit = 0 AS
DECLARE @sql nvarchar(4000)
SET @sql = 'SELECT col1,col3
            FROM dbo.' + quotename(@tblname) + '
            WHERE keycol = @key'
IF @debug = 1 PRINT @sql
EXEC sp_executesql @sql,N'@key varchar(10)',@key = @key

例如,如果你有一个名为’x’,’y’和’z’的表’MyTable’,它可能看起来像:

DECLARE @columnName nvarchar(128)
DECLARE @sql nvarchar(4000)
set @columnName = 'z'

SET @sql = 'SELECT x,y,' + @columnName + ' from MyTable'
EXEC sp_executesql @sql,N'@columnName varchar(128)',@columnName = @columnName

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读