1. 程式人生 > 其它 >Oracle SQL語句轉大寫導致別名取不到

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 欄位就是找不到, 後來查看了一下檔案, 原來是大小寫的錯誤, 所以有時候這就沒辦法了要手動改了, 我提出了這個問題只是提醒大家以後程式設計時候多加註意一下.

原文: oracle 的 sql 語句大小寫

解決方法

SELECT RISK_ID as risk_id FROM RISK_OPERATION

這種方式是不起作用的.

SELECT risk_id as "riskId" FROM RISK_OPERATION

這種方式可以.

為什麼Oracle要採取這種策略

TODO

總結

在取別名的時候加上雙引號就可以了.

參考文件

結束語

本文記錄了 Oracle 會將使用者的 SQL 語句轉為大寫而導致別名欄位的值取不到的原因和解決經過, 但尚未查清 Oracle 為什麼選擇這一策略. 只要通過 "" 將 Oracle SQL 欄位給包裹起來就可以解決此問題.

原文地址: http://blog.duhbb.com/2022/02/18/oracle-sql-uppercase-convert-leads-alias-error/

歡迎訪問我的部落格: http://blog.duhbb.com/