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

时间:2012-06-06 19:15:54

标签: 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中执行此操作?

谢谢你!

5 个答案:

答案 0 :(得分:32)

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 

用方括号包裹名称。

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

答案 1 :(得分:4)

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]

,这也是一种很好的做法。

更好的做法是完全避免这些......

答案 2 :(得分:4)

我理解需要创建包含空格的列,特别是对于用户将与之交互的报表,将列标题标记为“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]

...

通过这种方式,您无需在代码中的任何位置处理这些“友好”列名称,但在需要使用友好列名称的情况下,您可以使用该视图...

答案 3 :(得分:1)

通常在sql中你不这样做。你做响应status_code,如果你必须使用空格我会尝试用\或使用[响应状态代码]或其他东西逃避它们

答案 4 :(得分:0)

您可以使用包含空格的列,但通常可以避免使用空格。您需要将列包装在括号中以选择它:

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