簡単な分析Oracleの中のは号に等しくありません
1013 ワード
Oracleの中の不等号について:Oracleの中で、<>!=======>同じ番号ではないという意味です。全部使えますでも不思議なのは、priceが180000の商品ではないと思う時:SELECT id、name FROM product where price<>180000;この文を実行する時、priceis null の記録が出ません。priceがもらえないということはnullの商品です。必ず使用します。SELECT id、name FROM product where price<>180000 or price is null;いいです文字列のフィールドには同じ問題があります。覚えてください。nullはis nullまたはis not nullでしか判断できません。他のオペレータとnullの操作は全部falseです。=======================================================================================================テスト:select*from test where name<>'xn'nameが空でない記録しか検出できません。name<>'xn'を取ればいいです。このような書き方は問題があります。そしてinstr(name,'xn')=0を使って判断しますが、nameが空でないなら、判断は有効です。nameが暇なら、この判断はまた問題があります。やむを得ずinstr(name、'xx')、'xn')=0で判断します。たとえnameが空であっても、'xx'と接続したら、空ではないです。だから最後のsql文は、select*from test where instr(concat)、'xn'=0でnameフィールドが'xn'に等しくないレコードを調べます。または、select*from test where nvl('xx')<>'xn'でnameフィールドが'xn'に等しくないレコードを照会することができます。