Oracle对表名大小写敏感吗,让Oracle 大小写敏感 表名 字段名 对像名
一、解決方案
1、在表名、字段名、對(duì)象名上加上雙引號(hào),即可實(shí)現(xiàn)讓oracle大小寫(xiě)區(qū)分。
2、但是這又引起了另一個(gè)問(wèn)題:在數(shù)據(jù)庫(kù)操作中,sql語(yǔ)句中相應(yīng)的表名、字段名、對(duì)象名上一定要加雙引號(hào)。
解決辦法是:使用"\"轉(zhuǎn)義。如:
String sql = "select * from userinfo where?\"loginId\"=? and loginpwd=?";
二、詳解
一 般情況下,使用者在進(jìn)行Oracle開(kāi)發(fā)或管理里都不會(huì)對(duì)ORACLE對(duì)像名大小寫(xiě)進(jìn)行區(qū)別,因?yàn)镺RALCE在普通情況下會(huì)將所有小寫(xiě)都轉(zhuǎn)換為大寫(xiě)進(jìn)行 處理,所以可以說(shuō)是大小寫(xiě)不敏感的。但是實(shí)際ORACLE內(nèi)部有它一套完整的對(duì)像名處理方式。本文將從實(shí)例進(jìn)行分析與探討ORACLE對(duì)像名大小寫(xiě)敏感性 的處理機(jī)制。
可 能很多人在工作已經(jīng)了解到,ORACLE在創(chuàng)建對(duì)像時(shí)是可以加引號(hào)的,如果不加引號(hào)則不能使用特別字符,只能使用以字母開(kāi)頭的命名。如果加了引號(hào)就可以在 對(duì)像名里使用任何字符,包括數(shù)字開(kāi)頭、下劃線、逗號(hào)等等。在導(dǎo)出SQLSERVER2000的對(duì)像創(chuàng)建腳本時(shí)一般是加了引號(hào)的,所以經(jīng)常有人說(shuō)腳本在 ORACLE中運(yùn)行后對(duì)像不能訪問(wèn)的問(wèn)題。
注:
1、 本文是以O(shè)RACLE9.2為測(cè)試分析版本
2、 本文中提到的ORACLE對(duì)像名包括ORACLE中的表名、視圖名、字段名、函數(shù)名等等。
以下為創(chuàng)建表及訪問(wèn)使用不同命名方式的一個(gè)實(shí)例,測(cè)試結(jié)果如下:
Connected to Oracle9i Enterprise Edition Release 9.2.0.7.0 Connected as ***** SQL> create table mytable1 2 ( 3 C1 VARCHAR2(6) 4 ); Table created SQL> select * from "MYTABLE1"; C1 ------ SQL> select * from MYtable1; C1 ------ SQL> select * from "mytable1"; select * from "mytable1" ORA-00942: 表或視圖不存在 SQL> drop table mytable1; Table dropped SQL> SQL> SQL> create table "mytable1" 2 ( 3 C1 VARCHAR2(6) 4 ); Table created SQL> select * from "mytable1"; C1 ------ SQL> select * from mytable1; select * from mytable1 ORA-00942: 表或視圖不存在 SQL> select * from MYTABLE1; select * from MYTABLE1 ORA-00942: 表或視圖不存在
測(cè)試結(jié)果匯總:
√表示允許訪問(wèn),×表示不允許訪問(wèn)。
讀取 創(chuàng)建 mytable1 MYTABLE1 “mytable1” “MYTABLE1” mytable1 √ √ × √ MYTABLE1 √ √ × √ “mytable1” × × √ × “MYTABLE1” √ √ × √
總結(jié):
讀取 創(chuàng)建 小寫(xiě)字母 大寫(xiě)字母 加引號(hào)小寫(xiě)字母 加引號(hào)大寫(xiě)字母 小寫(xiě)字母 √ √ × √ 大寫(xiě)字母 √ √ × √ 加引號(hào)小寫(xiě)字母 × × √ × 加引號(hào)大寫(xiě)字母 √ √ × √
分析結(jié)論:
ORACLE在創(chuàng)建對(duì)像時(shí)如果沒(méi)有加引號(hào),對(duì)存入數(shù)據(jù)字典時(shí)都會(huì)將對(duì)像名小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母存儲(chǔ),如mytable將轉(zhuǎn)換成MYTABLE;如果創(chuàng)建時(shí)加了引號(hào),則以引號(hào)內(nèi)的實(shí)際字符存儲(chǔ)。
訪問(wèn)時(shí)如果沒(méi)加引號(hào)則會(huì)將小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母再訪問(wèn),如mytable將轉(zhuǎn)換成MYTABLE;如果加了引號(hào)則以引號(hào)內(nèi)的實(shí)際字符訪問(wèn)。
ORACLE在讀取數(shù)據(jù)字典時(shí)只要發(fā)現(xiàn)對(duì)像名里有小寫(xiě)字母或者是除字母漢字以外開(kāi)頭的字符都認(rèn)為是大小寫(xiě)敏感的,并且要求在訪問(wèn)時(shí)需要加上引號(hào)。
總結(jié)
以上是生活随笔為你收集整理的Oracle对表名大小写敏感吗,让Oracle 大小写敏感 表名 字段名 对像名的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 九阴真经战无不胜服务器位置,九阴真经各门
- 下一篇: oracle for函数,oracle分