You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL Developer中如何对表列做MD5哈希并存入对应列

Oracle 表字段MD5哈希值批量更新方案

错误原因分析

你使用INSERT语句的逻辑不符合需求:INSERT是向表中新增全新行记录,仅给MD5列赋值时,表中其他设置了NOT NULL非空约束的字段没有传入有效值,自然触发ORA-01400 无法插入NULL报错。
你的需求是给已有行的对应MD5列赋值,应该使用UPDATE语句而非INSERT。

正确实现步骤

1. 基础全表更新语句

如果需要对全表所有行的TEXT字段计算MD5后存入同一条记录的MD5列,直接执行以下语句即可:

UPDATE TABLENAME
SET MD5 = standard_hash(TEXT, 'MD5');

执行完成后提交事务即可生效。

2. 常见优化场景

  • 仅更新MD5列为空的记录,避免重复计算浪费资源:
UPDATE TABLENAME
SET MD5 = standard_hash(TEXT, 'MD5')
WHERE MD5 IS NULL;
  • TEXT字段存在空值时,加空值处理避免计算异常:
UPDATE TABLENAME
SET MD5 = standard_hash(NVL(TEXT, ' '), 'MD5')
WHERE MD5 IS NULL;

注意事项

standard_hash函数返回的是RAW类型,如果你的MD5列定义为VARCHAR2字符串类型,可以先转成十六进制字符串再存储:

UPDATE TABLENAME
SET MD5 = LOWER(RAWTOHEX(standard_hash(TEXT, 'MD5')));

大表更新建议分批提交,避免undo空间不足导致执行失败。

内容的提问来源于stack exchange,提问作者nikhil bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:09:03