4 回答

TA貢獻(xiàn)1784條經(jīng)驗 獲得超8個贊

TA貢獻(xiàn)2041條經(jīng)驗 獲得超4個贊
在Oracle中,
<>
!=
~=
^=
都是不等于號的意思。都可以使用。
但是奇怪是的, 我想拿出price不是180000的商品時:(price是Number類型的)
SELECT id, name FROM product where price<> 180000;
執(zhí)行這個語句時,priceis null 的記錄不出來。也就是拿不到price是null的商品。必須使用:
SELECT id, name FROM product where price<> 180000 or price is null;才行。
字符串的字段存在同樣的問題。
記?。簄ull只能通過is null或者is not null來判斷,其它操作符與null操作都是false。
======================================================================================================
測試:select * from test where name<>'xn'。只能查出name非空的記錄。去掉name<>'xn'就可以了。這種寫法有問題。
然后用了instr(name,'xn')=0 來判斷,如果name非空的話,判斷還是有效的。如果name為空,這個判斷又出問題了。不得已只得采取instr(concat(name,'xx'),'xn') = 0來判斷,因為就算name為空,當(dāng)和'xx'連接后,也會不為空的。
所以最后的sql語句為:
select * from test where instr(concat(name,'xx'),'xn') = 0 來查詢name字段不等于'xn'的記錄。
或者可以用 select * from test where nvl(name,'xx')<>'xn' 來查詢name字段不等于'xn'的記錄。

TA貢獻(xiàn)1942條經(jīng)驗 獲得超3個贊
sql中有兩種方式表示不等于,一種是"<>"(不含引號),另一種是"!="(不含引號),用法是一樣的。
補(bǔ)充:
1、不等于:<> ,!=,~= ,^= 這四個符號據(jù)說都可以在oracle中表示不等于,但是試了之后發(fā)現(xiàn)<> ,!= ,^=是可以的,~=不行,需要注意的是,只有<>是標(biāo)準(zhǔn)的sql語法,可以移植,其他的都是oracle平臺的特性,移植性較差,所以開發(fā)中,盡量使用<>表示不等于。
2、等于:=不用多說,但是要進(jìn)行null的等于判斷時,須使用is null 或is not null,null只能通過is null或者is not null來判斷,其它操作符與null操作都是false。
3、例子,select * from bl_ip_dt where amount <> 800,這條語句查不出amount等于null 的記錄,select * from bl_ip_dt where amount <> 800 or amount is null 才是可以的。
- 4 回答
- 0 關(guān)注
- 1391 瀏覽
添加回答
舉報