使用oracle發(fā)生標(biāo)識符無效問題及解決
使用oracle發(fā)生標(biāo)識符無效
1、一直以來寫SQL語句發(fā)生標(biāo)識符無效一般多為列名寫錯導(dǎo)致
2、也有許多情況是使用了關(guān)鍵字作為了列名
但是今天發(fā)生了一個意外的情況,在oracle數(shù)據(jù)庫建了一張表,創(chuàng)建成功后,發(fā)現(xiàn)數(shù)據(jù)表的列名是小寫的,想了想看過的書里面說過oracle會自動將小寫轉(zhuǎn)換成大寫,于是就選擇性忽略了.
由于oracle會自動將我們寫的SQL語句列名自動轉(zhuǎn)為大寫,所以平時寫SQL時,采用全小寫方式居多.
但是今天我卻收獲到了一個錯誤信息
標(biāo)識符無效
檢查了好幾遍,都沒有發(fā)現(xiàn)列名有錯誤
嘗試了10+min進(jìn)行解決,還是搞不定,百度了之后,得到的結(jié)果都是列名不一致導(dǎo)致,但是我檢查了好幾遍,都沒有發(fā)現(xiàn)列名錯誤
結(jié)合之前有了解過PostgreSQL的怪異問題 于是將SQL語句中的列名加上雙引號,成功查詢出數(shù)據(jù)
得出結(jié)論:
Oracle表字段名 | SQL語句中的列名 | 正確性 |
---|---|---|
大寫 | SQL語句中大寫 | 正確 |
大寫 | SQL語句中小寫 | 正確(會自動將小寫轉(zhuǎn)為大寫) |
大寫 | SQL語句中小寫(被引號包裹) | 錯誤 |
小寫 | SQL語句中大寫 | 錯誤 |
小寫 | SQL語句中小寫 | 錯誤(會自動將小寫轉(zhuǎn)為大寫) |
小寫 | SQL語句中小寫(被引號包裹) | 正確(不進(jìn)行大小寫轉(zhuǎn)換)` |
所以當(dāng)oracle數(shù)據(jù)表字段為小寫時,必須使用引號("")將SQL中的列名包裹才能正確執(zhí)行SQL語句.
oracle標(biāo)識符無效其他原因
出現(xiàn)以下這種原因的可能是除了你的表名和列名沒寫對 或者大小寫問題 或者沒加引號 還有可能是你的語句有問題
以下就是問題之一
group by不同于sql 后面不能跟as起的別名!
ORA-00904: "ZHONGLEI": 標(biāo)識符無效
錯誤的寫法
select count(id) as sbNum ,to_char(create_time, ‘YYYY-MM-DD')as tian ,to_char(create_time, ‘MM-DD') as ZHONGLEI from epidemic_report_info where create_time >= #{dayStart} and create_time < #{dayEnd} and user_type like ‘S%' group by tian,ZHONGLEI order by tian asc
正確的寫法
select count(ID) as sbNum ,to_char(CREATE_TIME, ‘YYYY-MM-DD') as tian ,to_char(CREATE_TIME, ‘MM-DD') as ZHONGLEI1 from EPIDEMIC_REPORT_INFO where CREATE_TIME >= #{dayStart} and CREATE_TIME < #{dayEnd} and USER_TYPE like ‘P%' group by to_char(CREATE_TIME, ‘YYYY-MM-DD'),to_char(CREATE_TIME, ‘MM-DD') order by tian asc
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
- Oracle?ORA-00904:標(biāo)識符無效解決方法(太坑了!!)
- PL/SQL登錄Oracle數(shù)據(jù)庫報錯ORA-12154:TNS:無法解析指定的連接標(biāo)識符已解決(本地未安裝Oracle需要連接服務(wù)器上的)
- Oracle報存儲過程中調(diào)用DBLink同義詞出現(xiàn)錯誤:PLS-00201: 必須聲明標(biāo)識符
- Oracle出現(xiàn)ora-12154無法解析指定連接標(biāo)識符的解決方法
- Oracle連接出現(xiàn)ora-12154無法解析指定的連接標(biāo)識符
- Oracle導(dǎo)dmp出現(xiàn)文件ORA-12154: TNS: 無法解析指定的連接標(biāo)識符問題的解決方案
相關(guān)文章
Oracle數(shù)據(jù)庫中的LISTAGG函數(shù)使用示例及注意事項(xiàng)
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中LISTAGG函數(shù)使用示例及注意事項(xiàng)的相關(guān)資料,listagg函數(shù)是Oracle?11.2推出的新特性,其主要功能類似于wmsys.wm_concat函數(shù),即將數(shù)據(jù)分組后把指定列的數(shù)據(jù)再通過指定符號合并,需要的朋友可以參考下2024-08-08使用IDEA對Oracle數(shù)據(jù)庫進(jìn)行簡單增刪改查操作
這篇文章主要介紹了使用IDEA對Oracle數(shù)據(jù)庫進(jìn)行簡單增刪改查操作,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01使用MySQL語句來查詢Apache服務(wù)器日志的方法
這篇文章主要介紹了使用MySQL語句來查詢Apache服務(wù)器日志的方法,五個實(shí)例均基于Linux系統(tǒng)進(jìn)行演示,需要的朋友可以參考下2015-06-06