Sql 为什么我不能“选择”一个名称以数字开头的数据库?
错误是 “7202”附近的语法错误Sql 为什么我不能“选择”一个名称以数字开头的数据库?,sql,sql-server,database,Sql,Sql Server,Database,错误是 “7202”附近的语法错误 您可以使用数字作为表名、数据库名或架构名-请参阅我的注释,但是,您需要使用[]对其进行转义: 其中[123]表示数据库,[456]表示模式,[789]表示表 编辑 为了方便,例如,如果RDBMS之间将来有机会进行移植,请注意,应优先使用双引号而不是[]来转义,例如 select * into [123].[456].[789] from OtherTable; 但是,您需要确保在连接上设置set QUOTED_标识符ON 如果对象的名称是动态构造的,请注意
您可以使用数字作为表名、数据库名或架构名-请参阅我的注释,但是,您需要使用[]对其进行转义: 其中[123]表示数据库,[456]表示模式,[789]表示表 编辑 为了方便,例如,如果RDBMS之间将来有机会进行移植,请注意,应优先使用双引号而不是[]来转义,例如
select *
into [123].[456].[789]
from OtherTable;
但是,您需要确保在连接上设置set QUOTED_标识符ON
如果对象的名称是动态构造的,请注意,也可以通过提供字符分隔符作为第二个参数来覆盖的默认转义,例如:
SELECT * from "123"."456"."789";
用另一个标识符作为schema.table组合的前缀用作数据库名称。您有一个名为7202的数据库?使用数字启动数据库对象名称是错误的做法。您正在使用或[]强制报价。为什么不像TBL_7202那样给它加一个简单的前缀呢?
SELECT * from "123"."456"."789";
select QUOTENAME('123', '"');