TSQL-如何在整个 .SQL 文件上缩写 Table 名称?

TSQL-How to abbreviate a Table name over an entire .SQL file?

想象一个很长的架构和 table 名称,也许:MyTableSchemaV098AlphaCentauri.MyTableNameblahblah.

在单个查询中,很容易缩写:

Select A.* 
from MyTableSchemaV098AlphaCentauri.MyTableNameblahblah as A

如何对 整个 .sql 文件执行此操作?这是我的想象:

With MyTableSchemaV098AlphaCentauri.MyTableNameblahblah as A:

  Select A.* from A

  Select top 10 A.* from A

End With

您可以切换到 SQLCMD mode 并使用 setvar:

:setvar alias "sys.databases"
SELECT name FROM $(alias);
SELECT COUNT(*) FROM $(alias) WHERE state = 0;

如果您不是 运行 SSMS 中的交互式脚本,并且不能使用某种预解析器执行这种 token/replace,那么不,您不能这样做在 T-SQL。你可以按照 Larnu 建议的同义词来做,但这很脆弱,因为它会破坏并发性。

CREATE SYNONYM dbo.alias FOR really_long_schema_name.object_name;
GO
SELECT * FROM dbo.alias;
SELECT TOP (1) * FROM dbo.alias;
GO
DROP SYNONYM dbo.alias;