select 查询而不给出 space 中间 *(星号)符号

select query without giving space in-between *(star) symbol

select*from tablename -- without spaces in-between the star symbol

select * from tablename -- Applied spaces in-between the star symbol

这两个查询都在我的 Sql-Server-2016 查询 window 中工作。有什么区别,我们需要在什么情况下使用它?为什么 Sql server 接受这个?

没有区别。与许多编程语言一样,T-SQL 是由字符串组成的输入 解析。在解析过程中,可能会从文本中提取许多不同类型的 "things",例如 KEYWORD(例如 selectfrom)和 ASTERISK(*)。

事实上这里不需要空格,因为星号字符不能是任何关键字或未转义的标识符(例如列或 table 名称)的一部分1,因此不存在需要空格来帮助解析的解析歧义。


1解析器仅针对标识符使用单个模式并在后面的步骤中实际区分标识符的情况并不少见(不能具体代表 T-SQL在具体列举的列表中实际上是 KEYWORD。