我对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
但它似乎不像我想象的那样有效。
正确的查询应该如何? 谢谢!
答案 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