使用 聚合函式(aggregate function)時,SQL語句的返回值的注意事項
假設有如下一條SQL語句
SELECT
AVG(xuo.`attach_succ_rate`) AS `attach_succ_rate`
FROM
`xdr_user_oriented` AS `xuo`
WHERE
xuo.`id` < -1
其中 xuo.`id` < -1 這個條件,正常情況下,肯定是不會滿足的(沒有哪個資料庫的 id 是比 0 小的)。
所以,我就理所當然地認為,這條SQL語句是不會有返回值的。
但事實卻狠狠的打了我的臉:
從 work bench 的控制檯日誌來看,這條SQL語句是有返回值的,返回的是一條attach_succ_rate欄位的值為 NULL 的記錄。
也正是因為這樣,導致了今天專案中(使用的是 iBatis ORM 框架),丟擲了一個 NPE。查詢了半天,才定位是這個原因。
所以,在這裡備註一下,以免日後再犯同樣的錯。
PS: 只要SQL語句中使用了 聚合函式 (avg()、sum()、max()。。。等) 的,都會出現這種情況。
但是我未在哪份正式的DB文件中找到與此有關的說明,若有誰知道的話,還請留個連結給我,謝謝:)
相關文章
- SQL 語句的注意事項SQL
- 函式注意事項函式
- Power Apps SortByColumns 函式使用注意事項APP函式
- 探索MySQL高階語句(數學函式、聚合函式、字串函式、日期時間函式)MySql函式字串
- ES6中箭頭函式使用的注意事項函式
- Ignite自定義函式注意事項函式
- SQL語句中聚合函式忽略NULL值的總結SQL函式Null
- SQL-函式 - 聚合函式SQL函式
- jmeter做分散式壓測時的注意事項JMeter分散式
- mongo聚合框架aggregate使用Go框架
- Angular 14 inject 函式使用過程中的一些注意事項Angular函式
- Oracle使用*的注意事項Oracle
- Oracle vs PostgreSQL,研發注意事項(13) - UPDATE語句OracleSQL
- Oracle臨時表使用注意事項Oracle
- Oracle vs PostgreSQL,研發注意事項(2)-DDL語句與事務OracleSQL
- C語言中函式的返回值C語言函式
- 刷題時需要的注意事項
- 畫PCB板時的注意事項
- 使用regulator_get時的一個小注意事項
- Go語言中 defer 使用場景及注意事項,你是要注意的!Go
- 使用ProForm的useRef()物件的注意事項ORM物件
- 說點JSON使用的注意事項JSON
- 使用MyBatis的注意事項有哪些MyBatis
- 使用HTTP的三個注意事項HTTP
- 使用Vue.js的注意事項Vue.js
- Mysql資料庫自定義函式的定義、使用方法及操作注意事項MySql資料庫函式
- Go Quiz: 從Go面試題看函式命名返回值的注意事項(超過80%的人都回答錯了)GoUI面試題函式
- SQL登入失敗注意事項SQL
- 使用代理IP時,有什麼注意事項?
- 類别範本及其成員函式的定義及注意事項函式
- 詳解箭頭函式和普通函式的區別以及箭頭函式的注意事項、不適用場景函式
- 關於使用toFixed()函式時報錯”toFixed() is not a function”的問題函式Function
- cookie的使用方法以及注意事項Cookie
- Python Enum 使用的幾點注意事項Python
- ip代理軟體的使用注意事項
- 【Android】 Android使用Java 8 語言功能注意事項AndroidJava
- GO 的匿名函式使用注意Go函式
- 函式的返回值函式
- MySQL在預設事務下各SQL語句使用的鎖分析MySql