2016-11-10 42 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')