相关疑难解决方法(0)

SQL Server将不等于<>的行返回到值并且为NULL

我有一个表有一列值可以是rowTypeID =(1,2,3或null).我想编写一个查询,返回任何没有值为3的行.在这个例子中,我想要所有NULL行以及所有1,2行,我只是不想要值为3的行

当前为数据库设置了ANSI null ON.

我很好奇为什么我不能写

select * from myTable where myCol <> 3
Run Code Online (Sandbox Code Playgroud)

此查询不会返回myCol列中具有NULL的任何行

我得写

select * from my Table where myCol <> 3 or myCol Is NULL 
Run Code Online (Sandbox Code Playgroud)

我是否总是必须包含IS NULL或者我可以设置它以使where子句myCol <> 3将返回具有Null作为我的Col的值的行

sql-server null

19
推荐指数
1
解决办法
4万
查看次数

where子句中的SQL和NULL值

所以我有一个简单的查询返回产品列表

SELECT     Model, CategoryID
FROM         Products
WHERE     (Model = '010-00749-01') 
Run Code Online (Sandbox Code Playgroud)

这回来了

010-00749-01    00000000-0000-0000-0000-000000000000
010-00749-01    NULL
Run Code Online (Sandbox Code Playgroud)

这是正确的,所以我只想要那些CategoryID不是'00000000-0000-0000-0000-000000000000'的产品,所以我有

SELECT     Model, CategoryID
FROM         Products
WHERE     (Model = '010-00749-01') 
AND (CategoryID <> '00000000-0000-0000-0000-000000000000') 
Run Code Online (Sandbox Code Playgroud)

但这没有结果.所以我将查询更改为

SELECT     Model, CategoryID
FROM         Products
WHERE     (Model = '010-00749-01') 
AND ((CategoryID <> '00000000-0000-0000-0000-000000000000') OR  (CategoryID  IS NULL))
Run Code Online (Sandbox Code Playgroud)

哪个返回预期结果

010-00749-01    NULL
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这种行为吗?MS SQL Server 2008

sql sql-server null sql-server-2008

9
推荐指数
1
解决办法
3万
查看次数

标签 统计

null ×2

sql-server ×2

sql ×1

sql-server-2008 ×1