ORACLE MD5中文比較

ORACLE MD5中文

首先查詢數據庫字符集, 點擊進入傳送門

select * from nls_database_parameters WHERE PARAMETER LIKE '%CHARACTER%'

NLS_CHARACTERSET	ZHS16GBK  ---這裏是GBK
NLS_NCHAR_CHARACTERSET	AL16UTF16  ---這裏是UTF16

根據字符集那篇文章介紹,我們做一個例子,區別數據庫字符集國家字符集

---表字段
"ID" NUMBER, 
"ITEM_VARCHAR2" VARCHAR2(100), 
"ITEM_CLOB" CLOB, 
"ITEM_NVARCHAR2" NVARCHAR2(100)

--表查詢
SELECT ID, ITEM_VARCHAR2, ITEM_CLOB, ITEM_NVARCHAR2 FROM TEST.AA_TEST3

ID  ITEM_VARCHAR2   ITEM_CLOB    ITEM_NVARCHAR2 
2	1	        a	       a
3	中國            中國	      中國

MD5方式最好是用LOWER( RAWTOHEX( DBMS_CRYPTO.HASH( utl_raw.cast_to_raw(COLUMN2), 2 ))) 

因爲DBMS_OBFUSCATION_TOOLKIT.MD5函數後期會廢棄,在上一篇文章最底部有介紹,進入後搜索關鍵字

“使用DBMS_CRYPTO包” 直達目標位置。

--##對(VARCHAR2)字段的中文進行MD5驗證
SELECT 
ITEM_VARCHAR2
,LOWER(RAWTOHEX(DBMS_CRYPTO.HASH(utl_raw.cast_to_raw(ITEM_VARCHAR2),2))) AS NORMAL
,LOWER(RAWTOHEX(DBMS_CRYPTO.HASH(utl_raw.cast_to_raw(CONVERT(ITEM_VARCHAR2,'UTF8')),2))) AS UTF8
FROM TEST.AA_TEST3

ITEM_VARCHAR2    NORMAL                             UTF8
1	        c4ca4238a0b923820dcc509a6f75849b    c4ca4238a0b923820dcc509a6f75849b
中國	        cf0832dedf7457bbcbfa00bbd87b300a    c13dceabcb143acd6c9298265d618a9f


--##對(CLOB)字段的中文進行MD5驗證
SELECT 
ITEM_CLOB
,LOWER(RAWTOHEX(DBMS_CRYPTO.HASH(ITEM_CLOB))) AS NORMAL
,LOWER(RAWTOHEX(DBMS_CRYPTO.HASH(CONVERT(ITEM_CLOB, 'UTF8'),2))) AS UTF8
FROM TEST.AA_TEST3

ITEM_CLOB          NORMAL                                   UTF8
a	        0cc175b9c0f1b6a831c399e269772661    0cc175b9c0f1b6a831c399e269772661
中國        	c13dceabcb143acd6c9298265d618a9f    c13dceabcb143acd6c9298265d618a9f

--##對(NVARCHAR2)字段的中文進行MD5驗證
SELECT 
ITEM_NVARCHAR2
,LOWER(RAWTOHEX(DBMS_CRYPTO.HASH(ITEM_NVARCHAR2,2))) AS NORMAL
,LOWER(RAWTOHEX(DBMS_CRYPTO.HASH(CONVERT(ITEM_NVARCHAR2, 'UTF8'),2))) AS UTF8
FROM TEST.AA_TEST3

ITEM_NVARCHAR2         NORMAL                                   UTF8
a	        760f753576f2955b0074758acb4d5fa6	0cc175b9c0f1b6a831c399e269772661
中國	        0414f3d8e26db6de83134ae76c503dcd	c13dceabcb143acd6c9298265d618a9f

找一個在線MD5網站驗證下

總結:

中國  這2個字的UTF8的MD5是c13dceabcb143acd6c9298265d618a9f

 

中國 MD5
數據類型 NORMAL UTF8
VARCHAR(GBK) cf0832dedf7457bbcbfa00bbd87b300a     c13dceabcb143acd6c9298265d618a9f
NVARCHAR(UTF16) 0414f3d8e26db6de83134ae76c503dcd  c13dceabcb143acd6c9298265d618a9f
CLOB(UTF8) c13dceabcb143acd6c9298265d618a9f c13dceabcb143acd6c9298265d618a9f

這也驗證的ORA數據類型字符集問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章