Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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 server 为什么可以';如果我运行查询,SQL Server数据库名称是否以数字开头?_Sql Server_Database - Fatal编程技术网

Sql server 为什么可以';如果我运行查询,SQL Server数据库名称是否以数字开头?

Sql server 为什么可以';如果我运行查询,SQL Server数据库名称是否以数字开头?,sql-server,database,Sql Server,Database,最近,我发现SQL Server数据库创建出现异常。如果我使用sql查询创建 create database 6033SomeDatabase; 它抛出了一个错误 但是使用ManagementStudio用户界面,我可以手动创建一个名为6033SomeDatabase的数据库 这是预期的行为还是一个bug?请解释一下这个问题。试着这样做 IF DB_ID('6033SomeDatabase') IS NULL CREATE DATABASE [6033SomeDatabase] 我会尽

最近,我发现SQL Server数据库创建出现异常。如果我使用sql查询创建

create database 6033SomeDatabase;
它抛出了一个错误

但是使用ManagementStudio用户界面,我可以手动创建一个名为
6033SomeDatabase
的数据库

这是预期的行为还是一个bug?请解释一下这个问题。

试着这样做

IF DB_ID('6033SomeDatabase') IS NULL
  CREATE DATABASE [6033SomeDatabase] 

我会尽力给你详细的回答

SQL语法对数据库、表和字段的名称施加了一些限制。F.e.:

SELECT * FROM SELECT, FROM WHERE SELECT.Id = FROM.SelectId
SQL解析器不会分析此查询。你应该重写它:

SELECT * FROM [SELECT], [FROM] WHERE [SELECT].Id = [FROM].SelectId
另一个例子:

SELECT * FROM T1 WHERE Code = 123e10
123e10
T1
中列的名称,还是123×1010的数值常量?解析器不知道


因此,命名是有规则的。如果您需要一些奇怪的数据库或表名,可以使用括号将其括起来。

尝试在代码中使用方括号:
创建数据库[123]
。这应该会有帮助。有关更多详细信息,请参见@MarkShevchenko@MarkShevchenko(就像任何语言一样,都有关于标识符的规则)@MarkShevchenko谢谢。这有帮助。但如果我运行这个查询:创建数据库;它起作用了。那么,为什么数据库名称以数字开头会出现这种例外情况呢?@Damien_The_unsiever我相应地更改了标题。虽然这个代码块可能会回答这个问题,但请尝试通过相关解释来改进您的答案