Sql server 如何处理SQL Server中列名中的空格?

Sql server 如何处理SQL Server中列名中的空格?,sql-server,database,Sql Server,Database,假设我想使用如下代码: select 'Response Status Code', 'Client Response Status Code' from TC_Sessions (NOLOCK) WHERE StartDate BETWEEN '05-15-2012' AND '06-01-2012' AND SupplyID = 3367 如何在SQL Server中实现这一点 谢谢大家! 通常在sql中,您不会这样做。您需要响应\状态\代码,如果您必须使用空格,我会尝试使用\或使用[r

假设我想使用如下代码:

select 'Response Status Code', 'Client Response Status Code' 
from TC_Sessions (NOLOCK)
WHERE StartDate BETWEEN '05-15-2012' AND '06-01-2012'
AND SupplyID = 3367
如何在SQL Server中实现这一点


谢谢大家!

通常在sql中,您不会这样做。您需要响应\状态\代码,如果您必须使用空格,我会尝试使用\或使用[response status code]或其他方法对其进行转义

select [Response Status Code], [Client Response Status Code]
from TC_Sessions (NOLOCK) 
WHERE StartDate BETWEEN '05-15-2012' AND '06-01-2012' 
AND SupplyID = 3367 
把名字用方括号括起来

但是,如果可能,最好避免在名称中使用空格。它只会为你创造更多的工作

select
   [Response Status Code],
   [Client Response Status Code] 
from TC_Sessions (NOLOCK)
WHERE StartDate BETWEEN '05-15-2012' AND '06-01-2012'
AND SupplyID = 3367
这也适用于表名,如果字段名是保留字或类似名称,如
[Order]
[Month]


一个更好的做法是完全避免这些…

可以使用带空格的列,但通常是避免的。您需要将列括在括号中才能选择它:

select [Response Status Code], [Client Response Status Code]  

我理解创建包含空格的列的必要性,特别是对于用户将与之交互的报告,将列标题标记为“客户端\响应\状态\代码”对用户不是很友好

当然,前面的答案在技术上都是正确的,但是我建议不要创建名称中带有空格的列,而是创建视图并更改列名

例如:

create view TC_Sessions_Report as
select response_status_code AS [Response State Code], 
       client_response_status_code as [Client Response Status Code]


这样,您就不必在代码中到处处理那些“友好”的列名,但如果确实需要使用友好的列名,您可以使用视图…

我确认,在所有名称中避免使用空格或特殊字符。永远不要忘记,当您需要在一种语言(C#,Java,…)中翻译这些名称时,变量名不接受空格,您可能会遇到冲突。关于这方面的更多信息,我确认这是一个好方法。表用于cade,视图用于报告。对我来说,这是一个很好的做法。我确认,请避免在所有您的姓名中使用空格或特殊字符。永远不要忘记,当您需要在一种语言(C#,Java,…)中翻译这些名称时,变量名不接受空格,您可能会遇到冲突。更多关于stackoverflow.com/q/55295594/196526的信息-巴斯蒂安·范达姆1分钟前