我有一个表GrowDaysLocation
。在该表中,可以有关于DistrictId
和RegionId
使用Case语句为SQL Server 2008的where语句赋值NULL值
的两条记录,
RegionId=1
和DistrictId = NULL
RegionId=1
和DistrictId = 1
我有一个条件,如果该行不为RegionId = 1 and DistrictId = 1
存在,则得到的行RegionId = 1 and DistrictId = NULL
。
如何使用单个查询完成此操作?
以下是我试过的查询。
在这个查询中,我在Where子句中使用CASE并使用子查询来查找行的存在,但是问题是当我从大小写返回NULL时它不会返回任何行。
============================================== ====
SET ANSI_NULLS OFF
Select * From GrowDaysLocations
Where DistrictId =
(CASE WHEN (Select Count(*) From GrowDaysLocations
Where RegionId = '38D95A68-4A92-4D11-9A88-464CF1492880' AND DistrictId = 'F4B67A07-1BF7-42F5-9F19-77329A215D8B' AND
GrowDaysProfileId = '79F8BDBF-67D3-44A7-A790-1C10EE8B2AD0') > 0 THEN DistrictId
ELSE
NULL
END
)
AND RegionId = '38D95A68-4A92-4D11-9A88-464CF1492880' AND GrowDaysProfileId = '79F8BDBF-67D3-44A7-A790-1C10EE8B2AD0'
======================================= ====
我不明白,你说'如果该行不存在RegionId = 1和DistrictId = 1',但你的例子意味着该行不存在给定的值'x'和'y' - - 这是真的? – Hogan 2012-07-22 14:25:06