亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么Oracle 9i將空字符串視為NULL?

為什么Oracle 9i將空字符串視為NULL?

幕布斯7119047 2019-06-13 17:39:40
為什么Oracle 9i將空字符串視為NULL?我知道是嗎?把‘當作NULL,但這并不能告訴我什么為什么情況就是這樣。據我所理解的SQL規范,‘與NULL-一個是有效的數據,另一個是表示沒有同樣的信息。你可以隨意推測,但如果是這樣的話,請說明一下。如果甲骨文有誰能對此發表評論的話,那就太棒了!
查看完整描述

3 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

我相信答案是甲骨文已經非常老了。

早在SQL標準出現之前,Oracle就做出了一個設計決策,即在VARCHAR/VARCHAR2NULL而且只有一種意義上的NULL(有關系理論家將區分從未被提示的數據、存在答案但用戶不知道的數據、沒有答案的數據,等等)。所有這些都構成了NULL).

當SQL標準出現并同意NULL空字符串是不同的實體,已經有一些Oracle用戶的代碼假定兩者是等價的。因此,Oracle基本上可以選擇破壞現有代碼,違反SQL標準,或者引入某種初始化參數,從而改變潛在大量查詢的功能。違反SQL標準(IMHO)是這三個選項中破壞性最小的。

Oracle留下了一個可能性,即VARCHAR數據類型將在以后的版本中更改,以符合sql標準(這就是為什么每個人都使用VARCHAR2在Oracle中,由于該數據類型的行為可以保證保持不變,因此將繼續進行)。


查看完整回答
反對 回復 2019-06-13
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

湯姆·凱特甲骨文副總裁:

零長度varchar被視為NULL。

“不被視為NULL。

‘當分配給char(1)時變成’(char類型是空白填充字符串)。

‘當分配給varchar2(1)時變成’,它是一個零長度字符串,而在Oracle中零長度字符串為NULL(它不是長的‘)


查看完整回答
反對 回復 2019-06-13
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

我懷疑,如果您把Oracle看作是早期開發人員可能做的事情-作為數據輸入系統的光榮后端,那么這就更有意義了。數據庫中的每個字段都對應于數據輸入操作符在屏幕上看到的一個字段。如果運算符沒有在字段中鍵入任何內容,無論是“生日”還是“地址”,那么該字段的數據都是“未知的”。運算符沒有辦法表明某人的地址實際上是空字符串,而且這一點也沒有多大意義。


查看完整回答
反對 回復 2019-06-13
  • 3 回答
  • 0 關注
  • 937 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號