0

where句に1つのフレーズを追加するまで、問題なく機能するクエリがあります。私はそのフレーズを 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' ) 

しかし、これは成功します(1行の違いに注意してください)

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 はどちらも true です。なぜ彼らは異なる結果を生み出すのでしょうか? 私は何が欠けていますか?

4

1 に答える 1

1

その理由はgroup_size、NULL値を取ることができるからだと思います。この場合、式は NULL として評価され、ブール値のコンテキストでは FALSE として扱われます。

于 2013-05-31T23:05:15.990 に答える