從其他資料庫轉到 Oracle DB 常常會碰到的一個雷是 Varchar2 裡空字符等於 null 這件事,因為在資料庫規範定義 null != ‘’ 之前Oracle就已經設計完資料庫系統了。
在 Oracle 的設計裡,空字符是等於 null 的。如果你新增一筆’’字串進資料庫,查詢時會顯示欄位資料為 null。
上圖是 Oracle 官方對於資料庫類型 Varchar 與 Varchar2 的說明,以目前而言 Varchar 和 Varchar2 是同義字,使用上並無不同。
官方建議使用 Varchar2,保留 Varchar 是因為預留以後更動的空間(也不知道甚麼時候才會實現)。
實際測試如下圖
可以看到不管是 Varchar 或是 Varchar2 結果都一樣。
所以在設計資料庫是使用 Oracle DB 的時候要注意到這個部分,並且在程式邏輯中處理判斷避免程式發生閃退的情況。