正如你可以在下面的圖片中看到,如果我執行下面的查詢,我得到至少10個結果:爲什麼我不能選擇!= Nvarchar?
SELECT TOP (10) [t0].[u_nonreportable]
FROM [sdidataitem] AS [t0]
WHERE [t0].[u_nonreportable] IS NULL
相反,如果我只是這樣執行查詢,我得到沒有結果:
-- Region Parameters
DECLARE @p0 NVarChar(1000) = 'Y'
-- EndRegion
SELECT TOP (10) [t0].[u_nonreportable]
FROM [sdidataitem] AS [t0]
WHERE [t0].[u_nonreportable] <> @p0
如果有結果,其中[u_nonreportable]爲空,那麼當我說[u_nonreportable]!='Y'?爲什麼我沒有得到任何結果?
注:我在上面的例子中使用LINQPad;不過,我也通過在SSMS中運行SQL查詢來確認結果。
因爲在SQL NULL永遠不會等於任何東西......並且它也不等於任何東西。因爲它是NULL,它意味着未知,因此知道或不知道該值實際上是否是「Y」在邏輯上是不可能的。 –