SQL查询中带方括号的意外结果

时间:2016-06-07 06:17:37

标签: sql sql-server-2014

我有一个数据库,其中有一个名为PaymentReciept的表,我正在玩,并从一个简单的全选查询中发现了一些意想不到的结果。

// Return 3139 rows
select * from PaymentReciept

// Return 3139 rows
select * from dbo.PaymentReciept 

// Return 0 rows
select * from [dbo.PaymentReciept]

我不明白为什么带方括号的查询没有返回任何结果。我知道方括号用作使用某些特殊字符或关键字的标识符的分隔符。

有人可以向我解释正在进行的事情或指导我阅读一些文章或书籍,以便我了解更多有关此行为的信息。

2 个答案:

答案 0 :(得分:7)

[dbo.PaymentReciept]

表示SQL正在查询名为dbo.PaymentReceipt

的表

,而

dbo.PaymentRecieptPaymentReciept表示SQL正在查询架构PaymentReceipt中名为dbo的表。

要正确使用方括号,请使用:

[dbo].[PaymentReciept]

答案 1 :(得分:3)

方括号应放在模式名称(dbo)和表名(PaymentReciept)周围,因为这两个是单独的对象:

select * from [dbo].[PaymentReciept]