2016-11-10 66 views
-1

嗨,我有一个关于SQL SERVERwhere filter子句的问题。SQL SERVER:where子句不以某种方式工作

enter image description here

SELECT 
    Person 

WHERE 
    region NOT LIKE '%France%' 
    AND region NOT LIKE '%America%' 
    AND Country NOT LIKE '%France%' 
    AND COUNTRY NOT LIKE '%America%' 

    OR Region IS NULL 
    OR Country IS NULL 

通过使用该代码时,它显示荷兰Joh /百合/ HU。

结果如何才能显示结果不包含单词“法国”和“美国”?结果应该是Lily/HU。

非常感谢提前。下面的SQL查询

+1

这显示约翰,因为你有'或地区为空' –

+3

@海伦娜在哪里你检查区域字段,但通过国家值来检查 – Mansoor

+0

你显示的示例查询是看为“法国”错误的领域。但是,您的结果与示例查询和数据(应该返回所有行)不一致。请将您的问题更新到**确切**查询和您正在使用的数据。 – 2016-11-10 11:13:22

回答

2

从您的意见之一:

我不想以显示包含 “法国” 无论是什么区域 或国家/地区列,但也显示那些空行。

SELECT 
    Person 
WHERE 
    ((country NOT LIKE '%France%' AND country NOT LIKE '%America%') 
    OR country IS NULL 
    ) 
    AND 
    ((region NOT LIKE '%France%' AND region NOT LIKE '%America%') 
    OR region IS NULL 
    ) 
0

使用

Select Person 
WHERE 
(country NOT LIKE '%France%' AND country NOT LIKE '%America%') 
and (region NOT LIKE '%France%' AND region NOT LIKE '%America%') 
+0

删除'或区域'为空后,它工作原因'或区域为空'也显示Joh值 –

+0

@Nayan Godhani,这只是一个简短的例子,因为cuz orinal数据有很多类似的情况,我不想显示任何区域或国家/地区列中包含“法国”的项目,还会显示具有空行的项目。 –

+0

即使对四行样本数据也不满足OP的要求。 – 2016-11-10 11:20:37

1

尝试这个

SELECT Person 
WHERE 
region NOT IN ('France','America') 
OR (region IS NULL OR country IS NULL) 
+0

小心评论为什么downvote –

+0

我错过了2个问题,我已经更新了它。我可以使用Region NOT IN('%France%','%America%')和COUNTRY NOT IN('%France%','%America%')或(区域IS NULL OR国家/地区是否为空)? –

0

不,你需要隔离 “与” 和 “或” 条件carefully.also法国是国家不是在地区

Select Person 
    WHERE (Country NOT LIKE '%France%' and Country not like '%America%') 
    OR (Country is NULL) 
0

试试这个:

SELECT 
     Person 

    WHERE 
     ISNULL(Region, '') NOT IN ('France', 'America') 
     AND ISNULL(COUNTRY, '') NOT IN ('France', 'America')