我有一张桌子。该表有两个整数列。每列中允许空值。以下查询有效
select * from table where col1=1 and col2 = 2
但以下两个查询都不起作用
select * from table where col1=1 and col2 != 2 or
select * from table where col1=1 and col2 <> = 2
我知道比较运算符不适用于具有null的列,但是&#39; =&#39;是一个比较运算符,上面的第一个查询工作。我不明白为什么第一个查询有效,第二个查询没有? (如果你看到任何拼写错误就会忽略它们,我用真实的代码测试过这个错误就是当我把它转录到这个问题时。)
这里有两个sql语句,允许您创建一个表并在其中插入数据以测试上述查询。
CREATE TABLE Test (
ID int,
Col1 int,
Col2 int)
和插入语句
INSERT INTO test
(id, col1 , col2)
VALUES
(1,1,NULL),
(2,NULL,2),
(3,1,2)
答案 0 :(得分:1)
通过使用示例数据单独检查每个查询谓词的结果,可以帮助您理解。请注意,由于AND逻辑运算符,两个条件必须求值为TRUE才能返回一行。
pd.Series.extract
答案 1 :(得分:0)
如果您的评论中Col 2为2或null,那么您需要使用IS NULL
select * from table where col1=1 and col2 IS NULL
或将空值转换为其他一些未使用的值
select * from table where col1=1 and ISNULL(col2, 0) != 2
听起来那些列应该真的是位字段,但对我而言。