Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么我不能“选择”一个名称以数字开头的数据库?_Sql_Sql Server_Database - Fatal编程技术网

Sql 为什么我不能“选择”一个名称以数字开头的数据库?

Sql 为什么我不能“选择”一个名称以数字开头的数据库?,sql,sql-server,database,Sql,Sql Server,Database,错误是 “7202”附近的语法错误 您可以使用数字作为表名、数据库名或架构名-请参阅我的注释,但是,您需要使用[]对其进行转义: 其中[123]表示数据库,[456]表示模式,[789]表示表 编辑 为了方便,例如,如果RDBMS之间将来有机会进行移植,请注意,应优先使用双引号而不是[]来转义,例如 select * into [123].[456].[789] from OtherTable; 但是,您需要确保在连接上设置set QUOTED_标识符ON 如果对象的名称是动态构造的,请注意

错误是

“7202”附近的语法错误


您可以使用数字作为表名、数据库名或架构名-请参阅我的注释,但是,您需要使用[]对其进行转义:

其中[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', '"');