一、問(wèn)題由來(lái)
現(xiàn)在進(jìn)行項(xiàng)目改造,數(shù)據(jù)庫(kù)需要遷移,由原來(lái)的使用GBase數(shù)據(jù)庫(kù)改為使用Oracle數(shù)據(jù)庫(kù),今天測(cè)試人員在測(cè)試時(shí)后臺(tái)報(bào)了一個(gè)異常。
![](/d/20211018/0a3e0091a09fcb14a5ba05b8a5c2e5da.gif)
把SQL語(yǔ)句單獨(dú)復(fù)制出來(lái)進(jìn)行查詢(xún),還是報(bào)錯(cuò),仔細(xì)分析原因才知道是表中的字段使用了Oracle中的關(guān)鍵字size。
二、問(wèn)題分析
項(xiàng)目中使用的Oracle版本如下:
![](/d/20211018/69c2528c8304deb757affd8e123b5c1c.gif)
一般來(lái)說(shuō)建表的時(shí)候是不會(huì)使用關(guān)鍵字的,可是之前的開(kāi)發(fā)人員或者是數(shù)據(jù)庫(kù)運(yùn)維人員可能為了偷懶吧,在那張表中使用四個(gè)Oracle中的關(guān)鍵字,
所以導(dǎo)致查詢(xún)的時(shí)候出現(xiàn)異常。
三、解決方案
找到問(wèn)題的原因后,問(wèn)題就好解決了。詢(xún)問(wèn)了一下開(kāi)發(fā)的同事有沒(méi)有好的解決辦法,有個(gè)同事說(shuō)這種情況可是在查詢(xún)的列中使用雙引號(hào)
將需要查詢(xún)的字段包起來(lái)試一下。我立馬去嘗試,簡(jiǎn)單查詢(xún)時(shí)確實(shí)可行,可是使用分組查詢(xún)查詢(xún)后立馬報(bào)錯(cuò)。下面是查詢(xún)語(yǔ)句:
![](/d/20211018/3c05e082fa7a8b23ace175e1dbb71872.gif)
所以使用雙引號(hào)的方案被否定了,因?yàn)椴还苁褂没蛘呤遣皇褂秒p引號(hào)將關(guān)鍵字包起來(lái),group by 后面都不能跟Oracle的關(guān)鍵字。除了這個(gè)問(wèn)題外,
在新增數(shù)據(jù)的時(shí)候,也是出現(xiàn)各種問(wèn)題,按照常規(guī)的方式不能正常插入,只能按照如下的方式進(jìn)行插入,在新增時(shí)表后面不跟列名:
![](/d/20211018/ead54ce7dc56919ad08281b37d2cd08f.gif)
衡量利弊后,發(fā)現(xiàn)表中字段使用關(guān)鍵字這種方式非常不可取,還是改列名這個(gè)方法最靠譜。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 使用SQL語(yǔ)句查詢(xún)MySQL,SQLServer,Oracle所有數(shù)據(jù)庫(kù)名和表名,字段名
- Oracle數(shù)據(jù)庫(kù)表中字段順序的修改方法
- Oracle表字段的增刪改、表的重命名及主鍵的增刪改
- Oracle刪除表、字段之前判斷表、字段是否存在
- oracle獲取當(dāng)前用戶(hù)表、字段等詳細(xì)信息SQL
- oracle刪除表字段和oracle表增加字段
- 在oracle 數(shù)據(jù)庫(kù)查詢(xún)的select 查詢(xún)字段中關(guān)聯(lián)其他表的方法