我有一个数据库,其中有一个名为PaymentReciept
的表,我正在玩,并从一个简单的全选查询中发现了一些意想不到的结果。
// Return 3139 rows
select * from PaymentReciept
// Return 3139 rows
select * from dbo.PaymentReciept
// Return 0 rows
select * from [dbo.PaymentReciept]
我不明白为什么带方括号的查询没有返回任何结果。我知道方括号用作使用某些特殊字符或关键字的标识符的分隔符。
有人可以向我解释正在进行的事情或指导我阅读一些文章或书籍,以便我了解更多有关此行为的信息。
答案 0 :(得分:7)
[dbo.PaymentReciept]
表示SQL正在查询名为dbo.PaymentReceipt
的表,而
dbo.PaymentReciept
和PaymentReciept
表示SQL正在查询架构PaymentReceipt
中名为dbo
的表。
要正确使用方括号,请使用:
[dbo].[PaymentReciept]
答案 1 :(得分:3)
方括号应放在模式名称(dbo
)和表名(PaymentReciept
)周围,因为这两个是单独的对象:
select * from [dbo].[PaymentReciept]