2016-06-07 41 views
-1

我有一个名为PaymentReciept的表的数据库我正在玩,并发现一些简单的选择所有查询意外的结果。SQL查询中的方括号意外的结果

// 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.PaymentRecieptPaymentReciept表示SQL正在查询模式dbo中名为PaymentReceipt的表。

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

[dbo].[PaymentReciept]

+0

感谢您的快速回复。但是,如果SQL查询名为'dbo.PaymentReceipt'的表,那么为什么它没有返回对象未找到错误,因为没有名为'dbo.PaymentReceipt'的表。 –

+2

@SyedFarjadZiaZaidi也许它是创建..尝试运行'SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE'%PaymentReceipts' – Akash

+0

是桌子在那里,我现在删除它。谢啦... –

3

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

select * from [dbo].[PaymentReciept]