首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将参数的值设置为不带动态SQL的列名。

将参数的值设置为不带动态SQL的列名。
EN

Stack Overflow用户
提问于 2015-09-24 06:22:42
回答 7查看 2.5K关注 0票数 2

是否有一种方法可以在不使用动态SQL的情况下将参数中的值命名为列?

我需要将@input参数中的值作为SQL语句中列的名称输出。我需要避免使用动态SQL。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE @input VARCHAR(10)=' Person '; 

SELECT count(*) AS  @input + ' Open Data'    
FROM #Accounts a
JOIN dbo.FileFeed t On t.ID = a.AccountID     
GROUP BY a.accountid
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-09-24 06:29:33

您需要使用动态SQL:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE @input VARCHAR(10) = ' Person '; 

DECLARE @sql NVARCHAR(MAX) = '
SELECT count(*) AS  [@Input Open Data]    
FROM #Accounts a JOIN
     dbo.FileFeed t
     On t.ID = a.AccountID     
GROUP BY a.accountid';

SET @sql = REPLACE(@sql, '@Input', @Input);

exec sp_executesql @sql;

然而,我并不认为这是一个好主意。如果需要重命名列,请在应用程序代码中这样做。

票数 1
EN

Stack Overflow用户

发布于 2015-09-24 06:30:59

在没有的情况下,使用临时表和重命名列是一种丑陋的方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE @input VARCHAR(10) = ' Person '; 
DECLARE @new_name VARCHAR(100) = @input + ' Open Data';

SELECT [rename_me] = COUNT(*)
INTO #temp    
FROM #Accounts a
JOIN dbo.FileFeed t On t.ID = a.AccountID     
GROUP BY a.accountid;

EXEC tempdb..sp_rename '#temp.rename_me', @new_name, 'COLUMN';

SELECT * 
FROM #temp;
票数 2
EN

Stack Overflow用户

发布于 2015-09-24 06:31:46

不是的。数据库使用类似于编译的过程将查询转换为执行计划。此过程的一部分涉及确定运行查询的用户是否具有访问查询所使用的表和列的权限。如果这些表和列直到执行时才确定,则编译步骤无法完成。这似乎很奇怪,但同样的事情也适用于结果集。

动态SQL (它创建一个新的查询,并在新的编译步骤中预先知道表和列名)将是实现这一目标的唯一方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32763862

复制
相关文章
SQL--动态列名
前几天遇到一个问题,就是查询时,列名是不固定的,是动态的,是一个传递过来的变量,简写如下:
IT云清
2019/01/22
2.4K0
ArcMap将栅格0值设置为NoData值的方法
  本文介绍在ArcMap软件中,将栅格图层中的0值或其他指定数值作为NoData值的方法。
疯狂学习GIS
2023/06/26
6020
ArcMap将栅格0值设置为NoData值的方法
JVM的Xms和Xmx参数设置为相同值有什么好处?
最近正在重新学习JVM的内存结构及相关优化内容,无意中看到IDEA的VM配置(安装时默认配置)中有如下的配置:
程序新视界
2020/09/10
20.6K1
@RequestParam 接收参数的值为null处理
@RequestMapping(value = “/test”) public String test( @RequestParam(value = “profit”,required = false,defaultValue = “0”) int profit){ System.out.println(“profit:”+profit); return “success”; } 第一种处理方式(如上图):defaultValue请求参数的默认值,一般和 required = false 一起使用
kirin
2021/03/25
3.3K0
swagger中参数为数组dataType的设置
swagger中参数为数组dataType的设置
Java架构师必看
2021/09/22
3.5K0
swagger中参数为数组dataType的设置
怎样将Anaconda设置为国内的镜像
“ Anaconda是世界上最流行的数据分析平台(它们官网自己吹的nb),如果把镜像改为国内的可以节省很多时间。”
讲编程的高老师
2020/08/14
7.4K1
java中给方法的参数设置默认值,java设置可选参数
今天在调整一个定时任务时需要将固定写死的查询日期通过外部传参来控制,如果没有传值给个默认值,于是了解了下java函数的参数默认值
高久峰
2023/06/29
7.8K0
SQL Server重置自增的值为0
提出问题: 随时测试的越多,自增的ID就越大,那么就要想办法进行恢复成初始的状态了。
手撕代码八百里
2020/07/28
1.8K0
SQL Server重置自增的值为0
为什么禁止把函数参数默认值设置为可变对象?
有时候我们在编写函数时,会需要给一些参数设置默认值,这个时候我们需要牢记一点:禁止使用可变对象作为参数默认值。
活用数据
2022/10/04
1.3K0
为字段设置初始值
在开发中为字段设置初始值这是最基本的要求,但是很多开发人员会在构造函数变多的时候忘记给成员变量设置初始值。为了避免这个问题,我们最好在声明的时候直接初始化,而不是在实现构造函数的时候去初始化。编译器会帮助开发人员在每个构造函数开头放入一段代码,这段代码会把开发人员在定义成员字段时所指定的初始值设置给这些成员字段。如果没有显示定义构造函数,那么编译器就会先创建默认构造函数,之后再向其中加入初始化代码。
喵叔
2020/09/08
1.6K0
ES6函数参数的默认值设置
在ES6(ECMAScript 2015)中,我们可以为函数参数设置默认值,这使得函数在调用时可以接受一部分或全部参数的默认值。默认参数值的设置提供了更灵活和方便的函数使用方式。
堕落飞鸟
2023/05/22
1.5K0
idea 设置导入包不带*
点开file->Settings,搜索java,在Code style里面找到imports选项,设置导入类数值阈值,默认同包类是超过5个变成*,静态导入超过3个变成*,这里我们改成10个,最好是公司统一,不然很烦。。。实在不想见到*就改成很大的数值,比如999,设置完成之后最上面选的scheme是default,对所有项目都生效。
全栈程序员站长
2021/05/19
2.2K0
将 Vim 设置为 Rust IDE
Rust 语言旨在以 C++ 开发人员熟悉的方式实现具有安全并发性和高内存性能的系统编程。它也是 Stack Overflow 的 2019 年开发人员调查中最受欢迎的编程语言之一。
用户8639654
2021/09/15
1.8K0
Javascript设置函数参数默认值[ ES6/ES2015总结]
对于js设置函数参数默认值对于绝大多数小伙伴来说,那可以说是相当的简单的,在ES6/ES2015中语法很简单,但是有一些浏览器是不兼容的ES6/ES2015的,或许大家会说我们可以使用babel来编译支持低版本浏览器。
IT工作者
2022/01/26
1.7K0
为什么不带参数的 Math.max() 返回-Infinity
Math.max() 是 JS 内置的方法,可以从传入的参数中,返回最大的一个。例如:
前端小智@大迁世界
2022/06/15
1K0
MyBatis 多参数综合查询的动态 SQL 实现示例
List<QualityDataOfAppDto> findQualityDataOfAppDtoByDeptNoAndAoneProductId( @Param("deptNo") Long deptNo, @Param("aoneProductId") Long aoneProductId); <select id="findQualityDataOfAppDtoByDeptNoAndAoneProductId" r
一个会写诗的程序员
2018/08/17
8300
kubernetes中为容器设置内核参数
注意:此方式如果使用了非安全内核参数,必须要先修改节点的kubelet配置,增加--allowed-unsafe-sysctls字段,并允许相关非安全参数,否则创建后,pod会报错SysctlForbidden,并大量不断创建pod,可能将集群搞挂
铜锣烧
2022/12/09
1.7K0
【原创】SQLServer将数据导出为SQL脚本的方法
        最近很多同学问到一个问题,如何将MSSQLServer的数据库以及里面的数据导出为SQL脚本,主要问的是MSSQLServer2000和2005,因为2008的管理器已经有了这个功能,2000和2005则没有。
流柯
2018/08/30
2.1K0
【原创】SQLServer将数据导出为SQL脚本的方法
java.sql.SQLException: 列名无效
在进行jdbc操作时,出现了如下图的bug: 错误原因:在执行sql语句后,进行遍历,但是取值与数据库中的列名不一致。 主要是因为字段名错误,如下,本来应该从数据库中取emp表中的realName字段
时间静止不是简史
2020/07/24
2.7K0
java.sql.SQLException: 列名无效
点击加载更多

相似问题

Oracle PL/SQL -不带动态SQL的动态列名的循环值

20

如何将SQL查询中的列名设置为参数?

23

动态SQL错误-为参数设置值

11

熊猫。将列名设置为参数

00

不带输出参数的动态SQL

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文