【问题标题】:How to make a temporary variable act as * in a select statement, in t-sql如何在 t-sql 中使临时变量在 select 语句中充当 *
【发布时间】:2015-09-09 12:07:25
【问题描述】:

在编写带有 '*' 的 select 语句时(例如 select * (...)),我想使用键盘组合 [shift+2] +[2],而不是 [shift+8 ]。这是因为我可以在我的键盘上找到右 shift 和 2 按钮比左 shift 和 8 更容易。虽然这对你来说可能看起来很随意,但对我来说并非如此,而且底层的问题无论如何都是有效的。至少我认为是。 :)

我尝试使用名为“@2”的declaring a variable 来完成我想要的事情,并且我想要the dbms to interpret that as '*' and not as a 'string *',因此作为*-命令。后来我想把它作为一个全局变量,但出于这个问题的目的,我问它是否只想要一个临时变量。

Is it possible 让 dbms 将其解释为 *-command?如果是这样,怎么做?可能我需要使用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 并编写了一个脚本,当我按下 Left shift 和 Escape 时插入一个“*”。奇迹般有效。请参阅下面的脚本。

>+Esc::
Send, *
Return

【问题讨论】:

  • 您需要 Dynamic-SQL,例如:DECLARE @sql NVARCHAR(MAX) = N'select '+ @2 + N' from TableAA)'; EXEC(@sql);
  • 你不能用常规的 SQL 语句做你想做的事。如果有帮助,您可以输入 * 作为 ASCII 42 值。
  • 也不要在没有 size 的情况下声明 nvarcharvarchar
  • 您需要一些键盘重新映射工具或自动热键或类似工具。
  • 完全:谢谢。 @arvo:是的,我想到了类似的东西。现在我正在研究 Windows Keyboard Layout Creator 1.4,但这在我的电脑上不起作用。如果我找到我信任的程序,我会在此处添加。

标签: sql-server tsql variables ssms declare


【解决方案1】:

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

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

SET @sql = N'SELECT ' + @2 + ' FROM TableAA'
EXEC(@sql)

【讨论】:

    猜你喜欢
    • 2020-04-27
    • 2020-11-28
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多