無效數字問題:Oracle-MySQL-PG大不同
有一天,一個開發找到我說。他的這個select 任意列 在查出資料的情況下 點選圖1的這個按鈕,資料逐步載入,然後就會出圖2的報錯。
圖1
圖2
我第一感覺,任意列都這樣,豈不是要走進科學了?而且神奇的是,不是一開始報錯,是資料逐步載入的時候才報錯。這一聽的確很詭異。也就是這個描述,讓我走了一段彎路。不過馬上覺得思路不對。
我就想了一下,既然任意列都報錯,那麼就不是from之前的問題,而是where之後的問題。他的where也很簡單: time有between 範圍,然後 and tpye=65。type是一個列的名字。
我們檢查了time列,資料型別是date型別。既然是date型別,資料在寫入表的時候已經已經做了校驗,就排除這個列的問題了。剩下的就是column=65。儘管看上去沒有問題,但是這是唯一的可能性了。
當然最後我是解決了這個問題,我們來複現一下這個問題,同時對比一下其他資料庫的情況。
圖3
表就是id a b 三個列,分別是id是int a和b都是字串。
當欄位是數值型的時候,=右邊就是數值。
當欄位是字元型的時候,=右邊應該是字元,如果是數值的話,就會復現我們今天這個。
結論就是這個表的這個欄位是字串,也就是 上面提到的type=65,如何解決那麼就是 type='65'就好了。
之所以會發生資料陸續載入中才會出來,是因為這一列有很多空值,空值不報錯,但是遇到有資料的行就把報錯了。
那麼其他資料庫上會如何呢?
我們來看看MySQL的
圖4
在圖4中a是int型,無論怎麼寫都不出錯。(這裡我們先不考慮索引,僅僅考慮執行會不會出錯)
圖5
在圖5中b是字元型,無論怎麼寫都不出錯。(這裡我們先不考慮索引,僅僅考慮執行會不會出錯)。
也就是說在Oracle中出錯的在MySQL中沒有問題。反過來說在MySQL中可以執行,但是到Oracle中就把報錯了。
在那麼在PG中會是如何?
圖6
圖6在PG中和之前一樣的建表。
圖7
看到圖7,發現PG的檢查和MySQL不一樣,和Oracle是一樣的。字元型的列,必須帶引號。
以上是Oracle MySQL和PG在這個場景上的差異。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2933911/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java技巧-解決JAVA_HOME變數無效問題Java變數
- laravel scout + elasticsearch-rtf 索引無效問題LaravelElasticsearch索引
- 解決mysqld_multi stop命令無效問題MySql
- vue中設定height:100%無效的問題Vue
- and-design-vue設定dropdownClassName無效的問題Vue
- 字串轉數字的問題字串
- Android setVisibility(View.GONE)無效的問題及原因分析AndroidViewGo
- 如何解決html設定height:100%無效的問題?HTML
- java解決數字黑洞問題Java
- 日期格式化時註解@DateTimeFormat無效的問題分析ORM
- ActiveX 控制元件重繪無效問題,用CClientDC 而不是CPaintDC控制元件clientAI
- linux的centos版本修改時間重啟後無效的問題LinuxCentOS
- 解決select2 在modal中搜尋框無效的問題
- 找到陣列中出現特定次數數字的問題陣列
- CSS 計數器的妙用:數字遞增動效CSS
- 解決易優後臺友情連結開啟nofollow無效的問題
- 無法訪問請求的頁面,因為該頁的相關配置資料無效問題的解決
- 無效字元字元
- SpringBoot 配置CORS處理前後端分離跨域配置無效問題解析Spring BootCORS後端跨域
- 提個js問題:為何js事件委託寫在非同步中無效?JS事件非同步
- 數字化轉型取得初效,如今智慧數字化經營可以做嗎?
- vue專案打包,解決靜態資源無法載入和路由載入無效(404)問題Vue路由
- 短視訊平臺原始碼,Android中 TextView設定顏色無效的問題原始碼AndroidTextView
- 無題號 分配問題 題解
- [提問交流]新建分類選單,授權無效
- nginx gzip on 無效Nginx
- 數字化轉型Top5 痛點問題剖析
- 對於數字或者字串有限的問題的處理字串
- libevent設定超時後取消超時(bufferevent_set_timeouts取消超時無效問題)
- 為了搞懂數字化轉型,我連問 ChatGPT 42個問題,通透!ChatGPT
- 漢字編碼問題
- .NET程式遮蔽一些無效蜘蛛的訪問配置
- 最大數問題
- 企業生存都是問題還有必要做數字化嗎?
- 數字化轉型解決企業資料安全問題
- 路由問題很無奈!路由
- post傳引數,但是後端無法接收問題解決後端
- Flask debug=True 無效Flask