2015-05-21 167 views
-1

這是一個非常簡單的查詢:where子句沒有返回

select br.BranchCode, br.BranchName,cn.Country, cd.AggregateCreditExposure as [CreditExposure] 
from Branches br join CreditDetails cd 
on br.BranchCode = cd.BranchCode join Country cn  
on br.CountryCode = cn.CountryCode 

,這讓我對結果集:

enter image description here

當我試圖把where條款,它不返回結果:

select br.BranchCode, br.BranchName,cn.Country, cd.AggregateCreditExposure as [CreditExposure] 
from Branches br join CreditDetails cd 
on br.BranchCode = cd.BranchCode join Country cn  
on br.CountryCode = cn.CountryCode 
where cn.Country = 'France' 

預期結果:

enter image description here

奇怪的是,它什麼都沒有返回。爲什麼它不起作用?

架構的Country:(只提供相關表格)

  • COUNTRYCODE INT PK

  • 國家VARCHAR(50)

+1

也許你有空格或其他不可見字符數據。 –

+0

當你使用'where cn.Country LIKE'France%''時會發生什麼? – LittleBobbyTables

+0

@TabAlleman不,我試過很多國家。我確信沒有打字錯誤 – Shaharyar

回答

4

您的數據中有空白字符或不可見字符。

我總是在SSMS中測試這種方式的方法是將第一個查詢的結果返回到數據,單擊包含「法國」的網格中的框(在本例中),進入查詢編輯器並粘貼(ctrl-v)在兩個字符之間,如''。如果有一些白色的空間,你會看到這樣的事情:

'France ' 

,而不是這樣的:

'France' 
0

我能想到的唯一的事情就是你在「法國」開始處有一個換行符'\ n',它實際上並沒有顯示在「選擇* from」中>嘗試並使用LIKE'France',如果它起作用,它必須是換行符。

嘗試

= '\nFrance' 

= '\nFrance\n' 

PS:我知道這是因爲我有這個類似的問題的某個時候回來。