2015-09-09 5 views
1

При написании выражения select с помощью '*' (например, select * (...)), я хотел бы использовать комбинацию клавиш [shift + 2] + [2] вместо [shift + 8]. Это потому, что я могу найти правую смену и 2 кнопки легче на клавиатуре, чем левую смену и 8. Хотя это может показаться вам произвольным, для меня это не так, и вопрос в этом случае действительно важен. По крайней мере, я так думаю. :)Как сделать временную переменную как * в выражении select, в t-sql

Я пытаюсь выполнить то, что хочу, declaring a variable с именем '@ 2', и я хочу 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 и написал сценарий, который вставляет «*», когда я нажимаю Left shift a Escape. Работает как шарм. См. Этот сценарий внизу.

>+Esc:: 
Send, * 
Return 
+5

Вам необходимо Dynamic-SQL для этого типа: 'DECLARE @sql NVARCHAR (MAX) = N'select '+ @ 2 + N' от TableAA) '; 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)