SQL - 不为null或条件

时间:2017-07-03 14:14:37

标签: sql

我对SQL很新,面临以下问题。 考虑我们有一个包含两列的表:

A         B
10        20
NULL      15
25        10
50        30
NULL      100

我需要的是选择满足以下条件的行:

任一
1)A为NULL

2)A< B

这意味着,因此我希望看到这样的表格:

A         B
10        20
NULL      15
NULL      100

我尝试使用以下查询:

SELECT * FROM mytable
WHERE A < B OR A is NULL

但它似乎不像我想象的那样有效。

正确的查询应该如何? 谢谢!

5 个答案:

答案 0 :(得分:4)

  

我查询的是:&#34; SELECT * FROM table WHERE ...某些条件   其他列... AND A是NULL或A&lt; B&#34;

你应该在括号中加上OR比较:

Select * 
from [table] 
where   (
  case when ISNUMERIC(A) = 1
  then cast (A as int)
  else 0
  end  
) < B

答案 1 :(得分:2)

SELECT *
FROM table
WHERE A = 'None' -- or (A IS NULL) ??
OR A < B

答案 2 :(得分:2)

根据OP,列A,B是时间戳。因此,查询应类似于:

SELECT A,B
FROM table
WHERE A IS NULL
OR A < B;

答案 3 :(得分:2)

考虑到您使用的是SQL Server,如果A的数据类型是varchar,那么

Select * from [table] where IsNull(A, 0) < B

如果int和nullable那么

routes

答案 4 :(得分:1)

SELECT * 
FROM table_name 
WHERE 
  A IS NULL OR
  A < B