T-SQL:Where子句似乎被忽略

时间:2016-08-25 13:58:23

标签: sql sql-server tsql

我正在使用SQL Server,它似乎返回在我的谓词中过滤了AGAINST的行。我已经将查询范围缩小到一些小但返回错误数据的内容。

DECLARE @ConnectMagicNumber BIGINT;
SET @ConnectMagicNumber = 4294967296;

SELECT DISTINCT
FLOOR(pe.ID_PE/@ConnectMagicNumber) as 'PE-StaNo',
pe.FName, pe.VName
FROM [dbo].[CRM_CPPE] pe 
WHERE 
-- Predicate below is not being applied
(FLOOR(pe.ID_PE/@ConnectMagicNumber)) > 5000
--
AND pe.FName = 'Augendoppler' OR (pe.FName = 'Batinic' AND pe.VName ='Drasco')

为什么当我明确过滤掉那些大于5000的PE-StaNo为1时,那个行回来了。

对我所缺少的任何帮助都将不胜感激。我动摇了我无法正确过滤的核心。

Bad SQL Query

3 个答案:

答案 0 :(得分:7)

你在这里缺少一些括号。您需要记住操作的顺序。

size_hint_y=None

答案 1 :(得分:2)

这是错误的部分:

ng-options="supervisor.id as (supervisor.name + ' ' + supervisor.lastname + ' ' + supervisor.id) for supervisor in supervisorListCopy | filter: '!' + employeeInfo.id"

由于Batinic在FName中,因此返回该行。

答案 2 :(得分:0)

因为,实质上,如果没有明确的括号,您的查询就是

...
FROM [dbo].[CRM_CPPE] pe 
WHERE 
((FLOOR(pe.ID_PE/@ConnectMagicNumber)) > 5000 AND pe.FName = 'Augendoppler') 
OR (pe.FName = 'Batinic' AND pe.VName ='Drasco')