2017-01-26 5 views
0

пример Концепция:Как установить псевдоним для идентификатора в SQL

declare @x varchar(max) 

set @x = 'top 1 *' 

select @x from table 

Результат хотел:

Для сценария, чтобы функционировать как:

select top 1 * from table 

Чтобы вернуть первую строку в таблицу.


Фактический результат:

Функции скрипта как:

select 'top 1 *' from table 

Многие строки возвращают со значениями 'сверху 1 *'


Use case:

В более сложном сценарии переменная x будет намного длиннее, которую нужно будет вызывать несколько раз позже в скрипте. Вместо того, чтобы вставлять эту длинную переменную снова и снова, я хочу установить для нее псевдоним. Это возможно?

+0

Вы не можете использовать его, как это - смотрите в динамическом SQL – Siyual

+0

Идентификаторы (т.е. имена объектов) не являются строками. Это примерно то же самое на любом языке. Вот почему, например, вы не можете использовать подготовленные заполнители инструкций для их указания. –

+0

@ ÁlvaroGonzález Мои извинения, я не знаком с техническими терминами (полностью самоучитель). Правильно ли я понимаю, что мой вопрос должен был быть сформулирован «Как установить псевдоним для идентификатора в SQL?» Благодарю. – Jonathan

ответ

0

Я думаю, что вы хотите:

declare @x varchar(max), @sql varchar(max) 

set @x = 'top 1 *' 

set @sql = 'select '+ @x +' from table' 

PRINT @sql; 

--EXECUTE (@sql) -- Uncomment this when you are sure of your query 
+1

Отлично! Спасибо. – Jonathan

+0

Теперь мне интересно, есть ли другой способ или более эффективный способ сделать это? Этот метод хорошо работает для более коротких сценариев, но не является практическим в противном случае (как упоминалось в разделе «использование»). – Jonathan

+0

@ Jonathan '@ sql' здесь просто переменная с текстом. Вы можете определить столько переменных, сколько хотите, или манипулировать ими столько, сколько вам нужно. В любом случае динамический SQL обычно генерируется другими языками (C, Java, PHP, любой ...). –

Смежные вопросы