Sql 将varchar转换为md5

Sql 将varchar转换为md5,sql,oracle,oracle11g,md5,Sql,Oracle,Oracle11g,Md5,我在oracle client 11g中有以下sql代码。我想将“ssno”转换为md5散列。我读过其他帖子,但没有一篇明确指出代码应该放在哪里。谢谢 SELECT FS_HIRES."rsa", FS_HIRES."ssno", FS_HIRES."lname", FS_HIRES."series", FS_HIRES."grade", FS_HIRES."pos_title", FS_HIRES

我在oracle client 11g中有以下sql代码。我想将“ssno”转换为md5散列。我读过其他帖子,但没有一篇明确指出代码应该放在哪里。谢谢

 SELECT FS_HIRES."rsa",
        FS_HIRES."ssno",
        FS_HIRES."lname",
        FS_HIRES."series",
        FS_HIRES."grade",
        FS_HIRES."pos_title",
        FS_HIRES."ethnicity",
        FS_HIRES."disability",
        FS_HIRES."type_appt",
        FS_HIRES."Perm_Temp",
        FS_HIRES."gender",
        FS_HIRES."age",
        FS_HIRES."age_categories",
        FS_HIRES."los",
        FS_HIRES."date_apnt",
        FS_HIRES."mm_apnt",
        FS_HIRES."yy_apnt",
        FS_HIRES."apnt_noa",
        FS_HIRES."apnt_auth",
        FS_HIRES.L2_DESC,
        FS_HIRES.L3_DESC,
        FS_HIRES.L4_DESC,
        FS_HIRES.L5_DESC,
        FS_HIRES."fy"
   FROM FS_HIRES
试试这个:

select 
'123456789' as ssno,
rawtohex(
DBMS_CRYPTO.Hash (
    UTL_I18N.STRING_TO_RAW ('123456789', 'AL32UTF8'),
    2)
) as ssno_md5
from dual;
输出:

SSNO    SSNO_MD5
123456789   25F9E794323B453885F5181F1B624D0B
试试这个:

select 
'123456789' as ssno,
rawtohex(
DBMS_CRYPTO.Hash (
    UTL_I18N.STRING_TO_RAW ('123456789', 'AL32UTF8'),
    2)
) as ssno_md5
from dual;
输出:

SSNO    SSNO_MD5
123456789   25F9E794323B453885F5181F1B624D0B
试试这个:

select 
'123456789' as ssno,
rawtohex(
DBMS_CRYPTO.Hash (
    UTL_I18N.STRING_TO_RAW ('123456789', 'AL32UTF8'),
    2)
) as ssno_md5
from dual;
输出:

SSNO    SSNO_MD5
123456789   25F9E794323B453885F5181F1B624D0B
试试这个:

select 
'123456789' as ssno,
rawtohex(
DBMS_CRYPTO.Hash (
    UTL_I18N.STRING_TO_RAW ('123456789', 'AL32UTF8'),
    2)
) as ssno_md5
from dual;
输出:

SSNO    SSNO_MD5
123456789   25F9E794323B453885F5181F1B624D0B

HASH_MD5
常量不能直接从SQL中引用,因此类似以下语句:

 SELECT FS_HIRES."rsa",
        DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(FS_HIRES."ssno", 'AL32UTF8'),
          DBMS_CRYPTO.HASH_MD5),
        ...
将得到一个错误,如“ORA-06553:PLS-221:‘HASH_MD5’不是过程或未定义”。您可以使用该常数的内部值,即2:

 SELECT FS_HIRES."rsa",
        DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(FS_HIRES."ssno", 'AL32UTF8'), 2),
        ...
或者,如果您不想依赖可能在未来版本中更改的常量,请定义您自己的函数:

create or replace function my_md5(p_str varchar2) return raw is
begin
  return dbms_crypto.hash(utl_i18n.string_to_raw(p_str, 'AL32UTF8'),
    dbms_crypto.hash_md5);
end my_md5;
/
。。。然后称之为:

 SELECT FS_HIRES."rsa",
        MY_MD5(FS_HIRES."ssno", 'AL32UTF8') AS "ssno",
        ...

如果您的数据库字符不是AL32UTF8,则可能需要进行更多的转换,并且在函数中隐藏该字符也会更容易。

无法直接从SQL引用
散列\u MD5
常量,因此类似以下语句:

 SELECT FS_HIRES."rsa",
        DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(FS_HIRES."ssno", 'AL32UTF8'),
          DBMS_CRYPTO.HASH_MD5),
        ...
将得到一个错误,如“ORA-06553:PLS-221:‘HASH_MD5’不是过程或未定义”。您可以使用该常数的内部值,即2:

 SELECT FS_HIRES."rsa",
        DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(FS_HIRES."ssno", 'AL32UTF8'), 2),
        ...
或者,如果您不想依赖可能在未来版本中更改的常量,请定义您自己的函数:

create or replace function my_md5(p_str varchar2) return raw is
begin
  return dbms_crypto.hash(utl_i18n.string_to_raw(p_str, 'AL32UTF8'),
    dbms_crypto.hash_md5);
end my_md5;
/
。。。然后称之为:

 SELECT FS_HIRES."rsa",
        MY_MD5(FS_HIRES."ssno", 'AL32UTF8') AS "ssno",
        ...

如果您的数据库字符不是AL32UTF8,则可能需要进行更多的转换,并且在函数中隐藏该字符也会更容易。

无法直接从SQL引用
散列\u MD5
常量,因此类似以下语句:

 SELECT FS_HIRES."rsa",
        DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(FS_HIRES."ssno", 'AL32UTF8'),
          DBMS_CRYPTO.HASH_MD5),
        ...
将得到一个错误,如“ORA-06553:PLS-221:‘HASH_MD5’不是过程或未定义”。您可以使用该常数的内部值,即2:

 SELECT FS_HIRES."rsa",
        DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(FS_HIRES."ssno", 'AL32UTF8'), 2),
        ...
或者,如果您不想依赖可能在未来版本中更改的常量,请定义您自己的函数:

create or replace function my_md5(p_str varchar2) return raw is
begin
  return dbms_crypto.hash(utl_i18n.string_to_raw(p_str, 'AL32UTF8'),
    dbms_crypto.hash_md5);
end my_md5;
/
。。。然后称之为:

 SELECT FS_HIRES."rsa",
        MY_MD5(FS_HIRES."ssno", 'AL32UTF8') AS "ssno",
        ...

如果您的数据库字符不是AL32UTF8,则可能需要进行更多的转换,并且在函数中隐藏该字符也会更容易。

无法直接从SQL引用
散列\u MD5
常量,因此类似以下语句:

 SELECT FS_HIRES."rsa",
        DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(FS_HIRES."ssno", 'AL32UTF8'),
          DBMS_CRYPTO.HASH_MD5),
        ...
将得到一个错误,如“ORA-06553:PLS-221:‘HASH_MD5’不是过程或未定义”。您可以使用该常数的内部值,即2:

 SELECT FS_HIRES."rsa",
        DBMS_CRYPTO.HASH(UTL_I18N.STRING_TO_RAW(FS_HIRES."ssno", 'AL32UTF8'), 2),
        ...
或者,如果您不想依赖可能在未来版本中更改的常量,请定义您自己的函数:

create or replace function my_md5(p_str varchar2) return raw is
begin
  return dbms_crypto.hash(utl_i18n.string_to_raw(p_str, 'AL32UTF8'),
    dbms_crypto.hash_md5);
end my_md5;
/
。。。然后称之为:

 SELECT FS_HIRES."rsa",
        MY_MD5(FS_HIRES."ssno", 'AL32UTF8') AS "ssno",
        ...

如果您的数据库字符不是AL32UTF8,则可能需要进行更多转换,并且在函数中隐藏该字符也会更容易。

选择md5(您的字段),…
?或者oracle中的任何函数。
选择md5(yourfield),…
?或者oracle中的任何函数。
选择md5(yourfield),…
?或者oracle中的任何函数。
选择md5(yourfield),…
?或者不管oracle中的函数是什么,谢谢。我就是这样做的。创建函数。在我的表中添加了一个新字段,然后使用函数更新了表。很不错的!谢谢大家,谢谢大家。我就是这样做的。创建函数。在我的表中添加了一个新字段,然后使用函数更新了表。很不错的!谢谢大家,谢谢大家。我就是这样做的。创建函数。在我的表中添加了一个新字段,然后使用函数更新了表。很不错的!谢谢大家,谢谢大家。我就是这样做的。创建函数。在我的表中添加了一个新字段,然后使用函数更新了表。很不错的!谢谢大家。