建庫選項-字元串比較大小寫敏感-測試

一、目的

    針對建庫選項-字元串比較大小寫敏感-進行測試

二、疑問

什麼是大小寫敏感?

敏感如何? 不敏感如何? 能否轉換?

建庫如何指定?

 

三、測試

3.1 大小寫敏感

DB版本測試環境DM8

SQL> select * from v$version;

行號 BANNER
———- ————————-
1 DM Database Server 64 V8
2 DB Version: 0x7000b



$dbca.sh建庫圖形化,選擇-字元串比較大小寫敏感-勾選,則敏感

1)查詢資料庫參數
SQL> select case_sensitive(); 行號 CASE_SENSITIVE() ---------- ---------------- 1 1
2)進行測試
SQL> create table test_Cc (c1 int,C2 int,"c3" int,"Cc4" int); 

SQL> select table_name from user_tables where table_name like ‘TEST%’;

行號 TABLE_NAME
———- ———-
1 TEST_CC

SQL> desc TEST_CC

行號 NAME TYPE$ NULLABLE
———- —- ——- ——–
1 C1 INTEGER Y
2 C2 INTEGER Y
3 c3 INTEGER Y
4 Cc4 INTEGER Y

可以說明,當大小寫敏感時,對於表名稱,默認小寫將轉換為大寫,大小寫忽略!

對於雙引號指定的大小寫,則根據雙引號進行強制指定。

 

3.2 大小寫不敏感

$dbca.sh建庫圖形化,選擇-字元串比較大小寫敏感- !非勾選,則不敏感

1)查詢資料庫參數
SQL> select case_sensitive();
行號     CASE_SENSITIVE()
---------- ----------------
1          0
2)進行測試
SQL> create table test_Cc (c1 int,C2 int,"c3" int,"Cc4" int); 

SQL> select table_name from user_tables where table_name like 'TEST%';

行號 TABLE_NAME
---------- ----------
1 test_Cc

SQL> desc TEST_CC

行號 name type$ nullable
———- —- ——- ——–
1 c1 INTEGER Y
2 C2 INTEGER Y
3 c3 INTEGER Y
4 Cc4 INTEGER Y


可以說明,當大小寫不敏感時,對於表名稱,輸入小寫則數據字典存儲表名稱為小寫!

對於雙引號指定的大小寫,則根據雙引號進行強制指定。

 

四、總結

1.建庫後無法調整大小寫敏感參數;

2.勾選大小寫銘感,則默認對小寫轉換為大寫進行處理;

3.建庫時,非勾選大小寫敏感,則默認使用輸入大小寫,進行嚴格區分!

4.例外:在大小寫敏感的情況下,使用雙引號裡面的數值,可以忽略大小寫參數!並沒有自動轉換為大寫。

SQL> create table a1(id int);
操作已執行
已用時間: 3.011(毫秒). 執行號:2107.
SQL> create table "b1"(id int);
操作已執行
已用時間: 1.884(毫秒). 執行號:2108.
SQL> desc a1

行號     NAME TYPE$   NULLABLE
---------- ---- ------- --------
1          ID   INTEGER Y

已用時間: 6.552(毫秒). 執行號:2109.
SQL> desc b1
[-20001]:無效的對象名.
已用時間: 35.123(毫秒). 執行號:0.
SQL> desc "b1"

行號     NAME TYPE$   NULLABLE
---------- ---- ------- --------
1          ID   INTEGER Y