T-SQL表名别名

时间:2011-03-02 22:38:39

标签: tsql variables

在我的T-SQL脚本中,我多次引用相同的长表名。我在不同的表上使用此查询。

有没有办法按变量引用表名?如果是这样,我可以在脚本将使用的顶部简单地声明一个变量,只需设置值,我就可以在各种表上运行它而无需在脚本中进行更改。

3 个答案:

答案 0 :(得分:8)

有两种选择。

在单个SQL语句中,您可以对表名进行别名,如下所示:

SELECT * 
FROM MySuperLongTableName T
WHERE T.SomeField=1

如果您需要跨多个脚本执行大量语句,则同义词可能是更好的选择:

CREATE SYNONYM SuperT FOR dbo.MySuperLongTableName

答案 1 :(得分:1)

您可以为该表创建一个同义词,但显然您需要确保在脚本运行时没有人更改同义词的定义(并且没有脚本的并行调用)

你在SSMS中运行这些吗?如果是这样,您可以设置SQL CMD模式(在“查询”菜单上)并使用

:setvar tablename "spt_values" 

use master

select * from $(tablename)

答案 2 :(得分:1)

你可以这样做:

Declare @TableName As nvarchar(max)
Declare @SQL AS nvarchar(max)
@TableName = 'longtablename'

@SQL = 'Select * From ' + @TableName
EXEC(@SQL)