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网站验证下

ORACLE MD5中文比较_第1张图片

总结:

中国  这2个字的UTF8的MD5是c13dceabcb143acd6c9298265d618a9f

 

中国 MD5
数据类型 NORMAL UTF8
VARCHAR(GBK) cf0832dedf7457bbcbfa00bbd87b300a     c13dceabcb143acd6c9298265d618a9f
NVARCHAR(UTF16) 0414f3d8e26db6de83134ae76c503dcd  c13dceabcb143acd6c9298265d618a9f
CLOB(UTF8) c13dceabcb143acd6c9298265d618a9f c13dceabcb143acd6c9298265d618a9f

这也验证的ORA数据类型字符集问题。

你可能感兴趣的:(#,ORACLE,中文,MD5)