欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用oracle發(fā)生標(biāo)識符無效問題及解決

 更新時間:2023年07月29日 08:49:29   作者:誤入歧途的羔羊  
這篇文章主要介紹了使用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),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論