有没有办法在oracle sql developer中对列的每个字段执行md5散列,并将结果散列存储在相应的列中(md5)

Posted

技术标签:

【中文标题】有没有办法在oracle sql developer中对列的每个字段执行md5散列,并将结果散列存储在相应的列中(md5)【英文标题】:Is there any way to perform md5 hashing in oracle sql developer on every field of an column, and store the result hash in corresponding column(md5) 【发布时间】:2021-11-09 13:26:30 【问题描述】:
select standard_hash(‘text’,’MD5’) from dual.

以上脚本在oracle sql developer中提供了md5哈希 但我想对我的表列进行散列并将结果存储在相应的字段中。

我也试过了:

INSERT INTO TABLENAME(MD5) 
SELECT standard_hash(TEXT,’MD5’) from TABLENAME

但它给出错误:ORA-01400 cannot insert into null

【问题讨论】:

你试过UPDATE TABLENAME SET MD5 = standard_hash(TEXT, 'MD5')吗?目前,您正尝试在表中使用哈希值创建新行,而在我看来,您想将 MD5 哈希添加到现有行。 【参考方案1】:

通常,standard_hash 会给您一个输出,您可能无法将其存储在您拥有的同一列中,因为长度不会相同。为避免这种情况,我建议您使用 raw 作为要存储哈希值的列的数据类型。

MD5 将任意长度的消息处理成 128 位的固定长度输出,通常表示为 32 个十六进制数字的序列。

SQL> create table test_normal ( c1 varchar2(20) ) ;

Table created.

SQL> insert into test_normal values ( 'AbdiRSDAloPdi8978' ) ;

1 row created.

SQL> select standard_hash(c1) from test_normal ;

STANDARD_HASH(C1)
----------------------------------------
BD6062214847DB31BB40A0185E3F89B0FB6980BF

SQL> alter table test_normal add ( c2 raw(256) );

Table altered.

SQL> update test_normal set c2=standard_hash(c1) ;

1 row updated.

SQL> select * from test_normal ;

C1
--------------------
C2
--------------------------------------------------------------------------------
AbdiRSDAloPdi8978
BD6062214847DB31BB40A0185E3F89B0FB6980BF


SQL> select standard_hash(c1,'MD5') from test_normal ;

STANDARD_HASH(C1,'MD5')
--------------------------------
E404D2867EB21AD65827E2858A07CA65

【讨论】:

我还有其他列“MD5”,我将在其中存储所有相应的哈希。有什么办法可以将结果存储在 md5 列字段中 “将结果存储在 md5”是什么意思,没有这种数据类型。您可以将 md5 哈希值存储在 raw 列中,而不会出现任何问题,如我的示例所示 Md5 是列名,我将使用它来存储所有哈希 该列的数据类型是什么? Varchar(32 字节),

以上是关于有没有办法在oracle sql developer中对列的每个字段执行md5散列,并将结果散列存储在相应的列中(md5)的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL Developer报错:Unable to find a Java Virtual Machine解决办法

如何在 Oracle SQL Developer 中设置自定义日期时间格式?

win8 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法

Oracle SQL Developer 4 表数据选项卡初始过滤器

pl/sql developer 中文字段显示乱码 解决办法

用PL/SQL Developer导出表数据的时候,窗口一闪而过解决办法