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
數據類型 | NORMAL | UTF8 |
---|---|---|
VARCHAR(GBK) | cf0832dedf7457bbcbfa00bbd87b300a | c13dceabcb143acd6c9298265d618a9f |
NVARCHAR(UTF16) | 0414f3d8e26db6de83134ae76c503dcd | c13dceabcb143acd6c9298265d618a9f |
CLOB(UTF8) | c13dceabcb143acd6c9298265d618a9f | c13dceabcb143acd6c9298265d618a9f |
這也驗證的ORA數據類型字符集問題。