2015-09-09 25 views
1

在编写带有'*'的select语句时(例如select *(...)),我想使用键盘组合[shift + 2] + [2],而不是[shift + 8]。这是因为我可以在键盘上找到右键和2键,而不是左键和8键。虽然它对您来说可能是任意的,但对我而言,它不是,底层的问题无论如何都是有效的。至少我认为是。 :)如何使一个临时变量在select语句中作为*,在t-sql中

我试图完成我想要的名称'@ 2'declaring a variable我想要the dbms to interpret that as '*' and not as a 'string *',所以作为*命令。后来我想把它作为一个全局变量,但为了这个问题的目的,我问它是否只需要一个临时变量。

Is it possible要让dbms把它解释为*命令吗?如果是这样,怎么样?可能我需要使用different datatype,但哪个?

请参阅脚本下方的结果以及所需的结果。我希望你能帮忙。

一段脚本:现在

declare @2 nvarchar 
set @2='*' 

select @2 from TableAA 

结果:

(No column name) 
* 
* 
* 
etc 

期望的结果:

A B C 
1 43 25 
2 33 788 
3 13 83 
etc. 

//看来它不能...查看下面的答案。我做了一些其他的事情来达到这样的效果:我安装了AutoHotkey并编写了一个脚本,当我按下左移Escape时插入'*'。奇迹般有效。看到下面的脚本。

>+Esc:: 
Send, * 
Return 
+5

需要动态-SQL此类似:'DECLARE @sql NVARCHAR从TableAA(MAX)= N'select '+ @ 2 + N')'; EXEC(@sql);' – lad2025

+1

你不能用常规的SQL语句来做你想做的事。如果有帮助,你可以输入一个ASCII * 42的值。 –

+0

也不要声明没有**大小的'nvarchar'或'varchar' ** –

回答

1

您不能使用变量名称来绑定列。你必须在以下使用Dynamic SQL

DECLARE @2 NVARCHAR(10) 
SET @2 = '*' 
DECLARE @sql NVARCHAR(1000); 

SET @sql = N'SELECT ' + @2 + ' FROM TableAA' 
EXEC(@sql) 
相关问题