Oracle SQL語句轉大寫導致別名取不到
引言
本文記錄了 Oracle 會將使用者的 SQL 語句轉為大寫而導致別名欄位的值取不到的原因和解決經過, 但尚未查清 Oracle 為什麼選擇這一策略. 只要通過 "" 將 Oracle SQL 欄位給包裹起來就可以解決此問題.
原文地址: http://blog.duhbb.com/2022/02/18/oracle-sql-uppercase-convert-leads-alias-error/
歡迎訪問我的部落格: http://blog.duhbb.com/
原因
Oracle 查詢欄位變成大寫的原因以及解決方法
首先因為 Oracle 資料庫不區分大小寫, 因為再沒有加單引號的情況下, sql語句會全部轉換成大寫.
因此資料庫設計的時候為了方便一般欄位名都會是大寫的.
另外以為作者遇到的問題
oracle 的 sql 語句大小寫怎麼辦? 你可以用引用 "" 括起來要區分大小寫的欄位 , 如 SELECT * FROM TABLENAME where "id"=1;
. 我最近一個專案是要把原來的連線池是 mysql 改為 oracle, 在 mapper.xml 檔案中 sql 語句有用 SELECT COUNT(*) AS count FROM TABLENAME
, 在 web 層呼叫了 count 欄位就是找不到, 後來查看了一下檔案, 原來是大小寫的錯誤, 所以有時候這就沒辦法了要手動改了, 我提出了這個問題只是提醒大家以後程式設計時候多加註意一下.
解決方法
SELECT RISK_ID as risk_id FROM RISK_OPERATION
這種方式是不起作用的.
SELECT risk_id as "riskId" FROM RISK_OPERATION
這種方式可以.
為什麼Oracle要採取這種策略
TODO
總結
在取別名的時候加上雙引號就可以了.
參考文件
- https://www.cnblogs.com/javJoker/p/7069321.html?utm_source=itdadao&utm_medium=referral
- 最開始看的忘了, 不要點這個, 是空的
結束語
本文記錄了 Oracle 會將使用者的 SQL 語句轉為大寫而導致別名欄位的值取不到的原因和解決經過, 但尚未查清 Oracle 為什麼選擇這一策略. 只要通過 "" 將 Oracle SQL 欄位給包裹起來就可以解決此問題.
原文地址: http://blog.duhbb.com/2022/02/18/oracle-sql-uppercase-convert-leads-alias-error/
歡迎訪問我的部落格: http://blog.duhbb.com/