DM8 字串大小寫敏感
1. 大小寫敏感引數是什麼?
大小寫敏感引數是達夢資料庫初始化時的一個全域性引數,預設是敏感的,並且設定後不可更改。
dminit help initdb V8 db version: 0x7000c License will expire on 2022-03-25 格式: ./dminit KEYWORD=value
例程: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=16
關鍵字 說明(預設值) -------------------------------------------------------------------------------- INI_FILE 初始化檔案dm.ini存放的路徑 PATH 初始資料庫存放的路徑 CTL_PATH 控制檔案路徑 LOG_PATH 日誌檔案路徑 EXTENT_SIZE 資料檔案使用的簇大小(16),可選值:16, 32, 64,單位:頁 PAGE_SIZE 資料頁大小(8),可選值:4, 8, 16, 32,單位:K LOG_SIZE 日誌檔案大小(256),單位為:M,範圍為:64M ~ 2G CASE_SENSITIVE 大小敏感(Y),可選值:Y/N,1/0 CHARSET/UNICODE_FLAG 字符集(0),可選值:0[GB18030],1[UTF-8],2[EUC-KR] SEC_PRIV_MODE 許可權管理模式(0),可選值:0[TRADITION],1[BMJ],2[EVAL] LENGTH_IN_CHAR VARCHAR 型別長度是否以字元為單位(N),可選值:Y/N,1/0 SYSDBA_PWD 設定SYSDBA密碼(SYSDBA) SYSAUDITOR_PWD 設定SYSAUDITOR密碼(SYSAUDITOR) DB_NAME 資料庫名(DAMENG) INSTANCE_NAME 例項名(DMSERVER) PORT_NUM 監聽埠號(5236) BUFFER 系統快取大小(100),單位M TIME_ZONE 設定時區(+08:00) PAGE_CHECK 頁檢查模式(0),可選值:0/1/2 EXTERNAL_CIPHER_NAME 設定預設加密演算法 EXTERNAL_HASH_NAME 設定預設HASH演算法 EXTERNAL_CRYPTO_NAME 設定根金鑰加密引擎 RLOG_ENC_FLAG 設定日誌檔案是否加密(N),可選值:Y/N,1/0 USBKEY_PIN 設定USBKEY PIN PAGE_ENC_SLICE_SIZE 設定頁加密分片大小,可選值:0、512、4096,單位:Byte ENCRYPT_NAME 設定全庫加密演算法 BLANK_PAD_MODE 設定空格填充模式(0),可選值:0/1 SYSTEM_MIRROR_PATH SYSTEM 資料檔案映象路徑 MAIN_MIRROR_PATH MAIN 資料檔案映象 ROLL_MIRROR_PATH 回滾檔案映象路徑 MAL_FLAG 初始化時設定dm.ini中的MAL_INI(0) ARCH_FLAG 初始化時設定dm.ini中的ARCH_INI(0) MPP_FLAG Mpp 系統內的庫初始化時設定dm.ini中的mpp_ini(0) CONTROL 初始化配置檔案(配置檔案格式見系統管理員手冊) AUTO_OVERWRITE 是否覆蓋所有同名檔案(0) 0:不覆蓋 1:部分覆蓋 2:完全覆蓋 USE_NEW_HASH 是否使用改進的字元型別HASH演算法(1) ELOG_PATH 指定初始化過程中生成的日誌檔案所在路徑 AP_PORT_NUM ECS 模式下AP協同工作的監聽埠 DFS_FLAG 初始化時設定dm.ini中的DFS_INI(0) DFS_PATH 啟用dfs時指定資料檔案的預設路徑 DFS_HOST 指定連線分散式系統DFS的服務地址(localhost) DFS_PORT 指定連線分散式系統DFS的服務埠號(3332) DFS_COPY_NUM 指定分散式系統的副本數(3) DFS_DB_NAME 指定分散式系統的中資料庫名(預設與DB_NAME一致) SHARE_FLAG 指定分散式系統中該資料庫的共享屬性(0) REGION_MODE 指定分散式系統中該資料庫的系統表空間資料檔案的區塊策略(0) 0:微區策略 1:巨集區策略 HUGE_WITH_DELTA 是否僅支援建立事務型HUGE表(1) 1:是 0:否 RLOG_GEN_FOR_HUGE 是否生成HUGE表REDO日誌(0) 1:是 0:否 PSEG_MGR_FLAG 是否僅使用管理段記錄事務資訊(0) 1:是 0:否 CHAR_FIX_STORAGE CHAR 是否按定長儲存(N),可選值:Y/N,1/0 HELP 列印幫助資訊 |
查詢大小寫敏感設定的情況:
SELECT CASE_SENSITIVE(); -- 結果為 1 是大小寫敏感,結果為 0 是不敏感 |
2. 大小寫敏感針對的是物件名還是表中資料?
首先看看對錶中內容作比較時大小寫敏感的影響。
CREATE TABLE TEST_CASE_SENSITIVE(C1 VARCHAR(100)); INSERT INTO TEST_CASE_SENSITIVE VALUES('a'); INSERT INTO TEST_CASE_SENSITIVE VALUES('A'); COMMIT; -- 大小寫敏感的情況 SELECT COUNT(*) FROM TEST_CASE_SENSITIVE WHERE C1='a'; -- 結果為1 SELECT COUNT(*) FROM TEST_CASE_SENSITIVE WHERE C1='A'; -- 結果為1 -- 大小寫不敏感的情況 SELECT COUNT(*) FROM TEST_CASE_SENSITIVE WHERE C1='a'; -- 結果為2 SELECT COUNT(*) FROM TEST_CASE_SENSITIVE WHERE C1='A'; -- 結果為2 |
再來看看大小寫敏感引數對物件名的影響。
-- 在大小寫敏感的情況下,建立物件時不要對物件名加雙引號,大小寫對物件名沒有影響 CREATE TABLE a(C1 INT); SELECT * FROM a; -- 執行成功 SELECT * FROM A; -- 執行成功 SELECT * FROM "A"; -- 執行成功 SELECT * FROM "a"; -- 執行失敗:無效的表或檢視名[A] CREATE TABLE "b"(C1 INT); SELECT * FROM b; -- 執行失敗:無效的表或檢視名[B] SELECT * FROM B; -- 執行失敗:無效的表或檢視名[B] SELECT * FROM "b"; -- 執行成功 SELECT * FROM "B"; -- 執行失敗:無效的表或檢視名[B] -- 注意:在達夢管理工具中使用圖形介面建立物件時如果用小寫就會自動加上雙引號,查詢的時候必須使用雙引號來訪問,很多朋友問題注意出在這裡,如果在大小寫敏感的庫裡面使用圖形介面而不是 SQL 語句來建立物件,一定注意要用大寫,用小寫就會自動加雙引號,強制保持大小寫了 -- 在大小寫不敏感的情況下,加不加雙引號都無所謂,對查詢沒有影響 CREATE TABLE a(C1 INT); SELECT * FROM a; -- 執行成功 SELECT * FROM A; -- 執行成功 SELECT * FROM "a"; -- 執行成功 SELECT * FROM "A"; -- 執行成功 CREATE TABLE "b"(C1 INT); SELECT * FROM b; -- 執行成功 SELECT * FROM B; -- 執行成功 SELECT * FROM "b"; -- 執行成功 SELECT * FROM "B"; -- 執行成功 |
OTHERS 操作,大小寫敏感引數對列名的影響。
-- 在大小寫敏感的情況下 create table test1(id int,name char(20)); -- 進行 DML 操作 insert into sysdba.test1 values(1,'an'); update sysdba.test1 set id=100 where id=1; delete from sysdba.test1 where id=100; commit; --4 條語句執行成功 insert into sysdba.test1("id","name") values(1,'an');-- 無效的列名[id] update sysdba.test1 set id=100 where "id"=1;-- 無效的列名[id] delete from sysdba.test1 where "id"=100;-- 無效的列名[id] -- 在大小寫不敏感的情況下 create table test1(id int,name char(20)); - 進行 DML 操作 insert into sysdba.test1 values(1,'an'); update sysdba.test1 set id=100 where id=1; delete from sysdba.test1 where id=100; commit; --4 條語句執行成功 insert into sysdba.test1("id","name") values(1,'an');-- 執行成功 update sysdba.test1 set id=100 where ID=1;-- 執行成功 select * from TEST1 where NAME='AN';-- 執行成功 delete from sysdba.test1 where NAME='AN';-- 執行成功 select * from TEST1;-- 執行成功 create table test2("id" int,id int);-- 執行失敗,列[id]已存在 |
3. 總結
1) 大小寫敏感的資料庫中,建立表時:
Ø 如果不對錶名或列名新增"",那麼表名和列名都自動轉換為大寫形式
Ø 如果對錶名或列名新增"",會固定書寫時的大、小寫形式,書寫時採取的是小寫形式,那麼就定型為小寫形式,其他不新增""的則自動轉換為大寫形式,無論書寫時採取的是大寫形式或小寫形式
Ø 同名的資料庫物件,如果大小寫不同,那麼則為兩個不同的物件,欄位同樣如此
Ø 一個表中,即使是相同的欄位名,只要大小寫不同,允許存在同名且不同大小寫形式的欄位
2) 大小寫敏感的資料庫中,DML 或 DDL 操作時:
Ø 如果不對錶名或列名新增"",那麼表名和列名都自動轉換為大寫形式
Ø 對錶進行 DML 操作時,如果沒有小寫形式的欄位,不能採取小寫加""的形式指定過濾欄位,會被認定為無效的欄位
Ø 如果對錶名或列名新增"",會固定書寫時的大、小寫形式,""中是大寫形式,則過濾欄位就是大寫欄位,""中是小寫欄位,則過濾欄位就是小寫欄位
Ø 對其進行 DML 操作時,需要利用""指定表名和欄位名,否則預設會認定以大寫形式去查詢物件
Ø 查詢時,''和""界定符中字串區分大小寫,界定符中的字串若是大寫形式,那僅查詢這個大寫形式的物件,若是或小寫形式,那僅查詢這個小寫形式的物件,DML 操作依舊
3) 大小寫不敏感的資料庫中,建立表時:
Ø 無論對不對錶名或列名新增"",表名和列名的大小寫形式不會發生變化,大寫形式就是大寫形式,小寫形式就是小寫形式
Ø 不允許存在同名的資料庫物件,即使大小寫不同,預設也只能存在一個
Ø 一個表中,也不允許相同的欄位名,即使大小寫不同
Ø 查詢時,''和""界定符不區分大小寫,界定符中的查詢或過濾條件即使是大寫或小寫,都可以查詢到預期的結果集
4) 大小寫不敏感的資料庫中,DML 或 DDL 操作時:
Ø 無論對不對錶名或列名新增"",表名和列名的大小寫形式不會發生變化,大寫形式就是大寫形式,小寫形式就是小寫形式
Ø 不允許存在同名的資料庫物件,即使大小寫不同,預設也只能存在一個
Ø 一個表中,也不允許相同的欄位名,即使大小寫不同
Ø 查詢時,''和""界定符不區分大小寫,界定符中的查詢或過濾條件即使是大寫或小寫,都可以查詢到預期的結果集,進行 DML 操作時依舊
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31516603/viewspace-2776124/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 字串-大小寫轉換字串
- python中排序時對大小寫不敏感Python排序
- JavaScript字串大小寫轉換JavaScript字串
- 在Linux下管理MySQL的大小寫敏感性LinuxMySql
- 字串大小寫轉換和字串的比較字串
- 正規表示式i修飾符(大小寫不敏感)
- 字串中大小寫轉換輸出字串
- php一招搞定替換指定字元(大小寫不敏感)PHP字元
- git Windows下重新命名檔案,大小寫敏感問題GitWindows
- Python中怎麼轉換字串大小寫Python字串
- 在 macOS 內使用大小寫敏感的 APFS 卷儲存程式碼Mac
- mssql sqlserver 判斷字串大小寫的方法分享SQLServer字串
- 解決Linux系統下MYSQL資料表大小寫敏感問題LinuxMySql
- Oracle 12c 業務使用者密碼大小寫不敏感Oracle密碼
- ts - 兩種方法實現忽略大小寫的字串排序字串排序
- MySQL的where條件字串區分大小寫的問題MySql字串
- python字串比較大小Python字串
- 從字串A中刪除字串B中存在的字母(不區分大小寫)C語言實現字串C語言
- DM8配置讀寫分離叢集
- 區分大小寫
- 【編測編學】零基礎學python_02_字串(大小寫轉換)Python字串
- Git 區分大小寫Git
- 字串大小的不同求法與區別字串
- JavaScript字母大小寫轉換JavaScript
- 大小寫字母的asc碼
- oracle 報大小寫錯誤Oracle
- 對於過長字串的大小比對字串
- DM8配置讀寫分離叢集V4.0
- DM8動態增加讀寫分離叢集節點
- Mysql 表名大小寫問題MySql
- 使用正則 轉換大小寫
- MySQL 8 忽略表名大小寫MySql
- mongodb如何不區分大小寫MongoDB
- python怎麼判斷大小寫Python
- mysql大小寫問題解決MySql
- 位右移 字母大小寫全排列
- 小工具實戰-Python 實現小工具輸出字串大小寫轉換、字串統計、編解碼、MD5 加密Python字串加密
- HTML 標籤與屬性大小寫HTML