0

我有一个可以正常工作的查询,直到我在 where 子句中添加一个短语。我已将该短语设置为: p.group_size <> 8772663552 荒谬的不平等。

此查询找不到具有相应姓氏的记录的记录:Balasubramanian

SELECT DISTINCT p.id, 
               p.last_name, 
               first_name,
               corporate_name, 
               city, 
               state,         
               e.full_name, 
               type, 
              l.current_step, 
          l.current_step_date,
FROM   prospect AS p 
       LEFT OUTER JOIN lettherebelight l 
                    ON p.id = l.prospect_id 
       LEFT OUTER JOIN employee e 
                    ON p.id_ofproducer = e.id 
WHERE  p.group_size <> 8772663552 
       AND type IN ( 'Prospect', 'Suspect' ) 
       AND ( last_name LIKE 'Balasubramanian' 
              OR corporate_name LIKE 'Balasubramanian' 
              OR first_name LIKE 'Balasubramanian' ) 

但是这个成功了(注意单行差异)

SELECT DISTINCT p.id, 
               p.last_name, 
               first_name,
               corporate_name, 
               city, 
               state,
               e.full_name, 
               type, 
              l.current_step, 
          l.current_step_date,
FROM   prospect AS p 
       LEFT OUTER JOIN lettherebelight l 
                    ON p.id = l.prospect_id 
       LEFT OUTER JOIN employee e 
                    ON p.id_ofproducer = e.id 
WHERE  type IN ( 'Prospect', 'Suspect' ) 
       AND ( last_name LIKE 'Balasubramanian' 
              OR corporate_name LIKE 'Balasubramanian' 
              OR first_name LIKE 'Balasubramanian' ) 

或者,如果我将行从p.group_size <> 8772663552 更改p.ID > 0它工作得很好:

 SELECT DISTINCT p.id, 
                   p.last_name, 
                   first_name,
                   corporate_name, 
                   city, 
                   state,         
                   e.full_name, 
                   type, 
                  l.current_step, 
              l.current_step_date,
    FROM   prospect AS p 
           LEFT OUTER JOIN lettherebelight l 
                        ON p.id = l.prospect_id 
           LEFT OUTER JOIN employee e 
                        ON p.id_ofproducer = e.id 
    WHERE  p.ID > 0
           AND type IN ( 'Prospect', 'Suspect' ) 
           AND ( last_name LIKE 'Balasubramanian' 
                  OR corporate_name LIKE 'Balasubramanian' 
                  OR first_name LIKE 'Balasubramanian' ) 

p.group_size <> 8772663552 到 p.ID > 0 都是真的。为什么它们会产生不同的结果?我错过了什么?

4

1 回答 1

1

我相信原因是它group_size可以采用 NULL 值。在这种情况下,您的表达式被评估为 NULL,在布尔上下文中被视为 FALSE。

于 2013-05-31T23:05:15.990 回答