25

假设我想使用这样的代码:

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

谢谢你!

4

5 回答 5

46
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 

将名称括在方括号中。

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

于 2012-06-06T19:22:52.910 回答
6

我了解创建带有空格的列的必要性,特别是对于用户将与之交互的报告,将列标题标记为“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]

...

这样您就不必在代码中的任何地方处理那些“友好”的列名,但是在您确实需要使用友好的列名的地方,您可以使用视图来代替......

于 2014-10-20T13:16:06.223 回答
5
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]

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

于 2012-06-06T19:22:57.017 回答
1

通常在sql中你不这样做。你做 response_status_code ,如果你必须使用空格,我会尝试用 \ 或使用 [Response Status Code] 或其他东西来转义它们

于 2012-06-06T19:19:40.143 回答
1

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

select [Response Status Code], [Client Response Status Code]  
于 2012-06-06T19:23:03.310 回答