Sql 有单引号和无单引号的差异

Sql 有单引号和无单引号的差异,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我见过有人用引号和没有引号来定义别名,但我不明白它们之间的区别。什么时候为什么我们应该使用引号,什么时候为什么不使用引号 convert(char(20) , usr_name) 'Name'; convert(char(20) , usr_name) "Name"; convert(char(20) , usr_name) Name; 如果希望字段名中有空格,则需要双引号:即 convert(char(20) , usr_name) 'Name'; convert(char(20) ,

我见过有人用引号和没有引号来定义别名,但我不明白它们之间的区别。什么时候为什么我们应该使用引号,什么时候为什么不使用引号

convert(char(20) , usr_name) 'Name'; 
convert(char(20) , usr_name) "Name"; 
convert(char(20) , usr_name) Name;

如果希望字段名中有空格,则需要双引号:即

convert(char(20) , usr_name) 'Name'; 
convert(char(20) , usr_name) "Employee Name"; 

这与有关SQL Server的规则有关。当标识符包含保留关键字或无效字符时,必须用双引号(仅在启用时有效)或方括号分隔。在所有其他情况下,分隔符都是可选的

单引号是列别名的附加分隔符。好的,这是唯一可以使用它们的情况(除了在查询的其他部分中引用别名时)。但不要引用我的话。令人惊讶的是,MSDN缺少列别名的描述


尽管如此,示例中提供的列别名不需要分隔。

只要列名不是保留字(如table、select等)且不包含空格或特殊字符,就可以安全地使用不带引号的列名。使用“Table”或[Table]几乎是相同的用法,字符串应使用单引号,而不是列名。仅在需要时使用
[方括号]
(例如,您出于某种原因在别名中使用空格)。使用单引号或双引号只会使它们看起来像字符串。方括号[]强制sql server将其视为sql server对象(表、列..)。单引号可能会将sql server/您混淆为字符串和对象名称。@Alex感谢您提供详细定义。我还建议使用可选的as。这样就更容易看出它是一个别名。如果您养成了这种习惯,那么在使用表提示或其他东西时,使用意外别名也会有所帮助。