Oracle訪問(wèn)數(shù)據(jù)庫(kù)字段和表名不區(qū)分大小寫(xiě)。
創(chuàng)新互聯(lián)是一家專業(yè)提供荔灣企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為荔灣眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
如:以下兩條語(yǔ)句
select name from test;
select NAME from TEST;
查詢的結(jié)果是一樣的。
另外說(shuō)明:一般在查詢數(shù)據(jù)庫(kù)表中字段的內(nèi)容時(shí),是區(qū)分大小寫(xiě)的。
如果表中數(shù)據(jù)如下:
用下邊語(yǔ)句可以查出結(jié)果:
select * from emp where ename='SMITH';
select * from emp where ename='SMITH';
但是如果用下邊的語(yǔ)句則查詢不出結(jié)果:
select * from emp where ename='smith';
Oracle的數(shù)據(jù)庫(kù)的對(duì)象名,就是不區(qū)分大小寫(xiě)的啊。
除非你建表的時(shí)候用雙引號(hào)引起來(lái)的,比如"tablename"(強(qiáng)烈不建議這么做)
否則,TableName 、 TABLENAME、tablename
都是一樣的,在oracle系統(tǒng)中都是以 大寫(xiě) TABLENAME 方式存儲(chǔ)的表名信息。
大多數(shù)情況下,數(shù)據(jù)庫(kù)對(duì)象名是不區(qū)分大小寫(xiě)的。
什么數(shù)據(jù)庫(kù)的表名是大小寫(xiě)區(qū)分的?
我所知道的特例是Oracle,正常情況下,無(wú)論你輸入的表名是大寫(xiě)、還是小寫(xiě),那么都以大寫(xiě)存儲(chǔ)的;使用的時(shí)候,大小寫(xiě)都可以。
而用雙引號(hào)引起來(lái)的表名,如果是小寫(xiě)的話,那么使用的時(shí)候,必須用雙引號(hào)引起來(lái)的小寫(xiě)才行。
是有區(qū)分的早先一直是在庫(kù)中建在庫(kù)中用,結(jié)果這次用pd9生成時(shí)忘了把一個(gè)屬性關(guān)閉了,居然每次都要在數(shù)據(jù)庫(kù)的表前指名“表空間"."表名"的形式而且必須加引號(hào),必須記錄大小寫(xiě),否則就告訴我說(shuō)沒(méi)有視圖,郁悶至死
于是查了相關(guān)網(wǎng)頁(yè),答案是有區(qū)分的,但是要在建表的時(shí)候強(qiáng)制區(qū)分,既所說(shuō)的建表時(shí)用雙引號(hào)。
否則oracle默認(rèn)的沒(méi)有區(qū)分,建表你用小寫(xiě),沒(méi)關(guān)系,oracle自動(dòng)轉(zhuǎn)成大寫(xiě),再調(diào)用時(shí)用大小寫(xiě)都可以。如果建表時(shí)強(qiáng)制大小寫(xiě)的話,那就要用到upper,lower函數(shù)來(lái)轉(zhuǎn)化。
至于表中所存的數(shù)據(jù),還是有區(qū)分的,存入大寫(xiě)就是大寫(xiě),存入小寫(xiě)就是小寫(xiě),查詢時(shí)要注意的。記住了下次一定處理,可憐呀,要在幾百個(gè)表里一個(gè)個(gè)的把字段上的“去掉引號(hào)”,還要用alter
table
name1
rename
to
name2
!的方式去掉數(shù)據(jù)庫(kù)表名稱上的引號(hào)(對(duì)于這個(gè)name2的名稱不用加名字空間了的:))