我試圖編寫一個簡單地選擇所有非空名稱的查詢。下面兩個查詢返回結果:在oracle中選擇不等於空字符串的字段
SELECT name FROM MyTable WHERE name != '';
SELECT name FROM MyTable WHERE name = '';
對於背景下,這兩個查詢返回結果的:
SELECT name FROM MyTable WHERE name != 'a';
SELECT name FROM MyTable WHERE name IS NOT NULL;
我讀的地方,空字符串等同於甲骨文NULL,但我還是不明白爲什麼這解釋了這種行爲。我需要同時支持SQL Server和Oracle,這就是爲什麼我不能只依靠WHERE name IS NOT NULL
任何人都可以解釋這裏發生了什麼?謝謝!
嗨,朋友,這取決於你的專欄的類型。 Oracle在varchar2 vs char列上的行爲有點意外。這另一個問題有詳細信息:http://stackoverflow.com/questions/1268177/oracle-not-distinguishing-between-nulls-and-empty-strings?rq=1 –
我不知道你的應用程序和支持,以及你這樣做,但這可能是和ORM的任務?看看它是否有幫助會很有趣。 – johnny
[爲什麼Oracle 9i將空字符串視爲NULL?](http://stackoverflow.com/questions/203493/why-does-oracle-9i-treat- an-empty-string-as-null) – johnny