2017-01-26 25 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 *'


使用案例:

在更復雜的情況下,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等)生成。 –

相關問題