0

私は次のように1つのテーブルから選択しようとします:

SELECT * FROM table1 where id=311
         and date BETWEEN '2012-09-01' And '2012-09-09' 
         and col2='a'
         and (col3 ='m' 
              or col3 ='n' 
              or col3=' ' )
ORDER BY date

表では、col3の値が「m」、「n」、またはnullである状況がありますが、このselectは、col3の値がnullである行を返しません。

4

5 に答える 5

3

NULL' '使用以外のものですcol3 is null

于 2012-09-12T09:28:16.763 に答える
2

データベースには、TRUE、FALSE、NULL(不明)の3値論理があります。

col3 ='' は真の条件であり、

col3がnullの場合、状態は不明です。

彼らは違う。

だからあなたは使用する必要があります

col3はnullです

ウィキペディアの「NULL」エントリを参照できます。

于 2012-09-12T09:53:51.790 に答える
1

NULLは、「m」、「n」、または「」と等しくありません。NULLはNULLと等しくありません。使用する:

SELECT * FROM table1 where id=311
         and date BETWEEN '2012-09-01' And '2012-09-09' 
         and col2='a'
         and (col3 ='m' 
              or col3 ='n' 
              or col3 IS NULL)
ORDER BY date
于 2012-09-12T09:29:11.240 に答える
1
SELECT * 
FROM table1 
where 
    id=311
    and date BETWEEN '2012-09-01' And '2012-09-09' 
    and col2='a'
    and (
        col3 ='m' 
        or col3 ='n' 
        or col3 is null 
    )
ORDER BY date
于 2012-09-12T09:29:35.263 に答える
1

ORリストを回避し、OR IS NULL:を回避するための優れたトリックを次に示します。

SELECT * 
FROM table1
WHERE id=311
 AND zdate BETWEEN '2012-09-01' AND '2012-09-09' 
 AND col2='a'
 AND COALESCE(col3, 'm') IN ('m', 'n' )
ORDER BY zdate
   ;
于 2012-09-12T09:34:55.047 に答える