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数据类型字符集问题。