不同数据库SQL语句中MD5的写法

最近在使用KingFusion开发MES系统,其中有些通用的功能可以参考以往的项目代码。

在开发调试用户密码重置功能时,遇到一个报错。

于是将报错的SQL语句丢给豆老师,帮忙解析。

01 问题

帮忙解析一下下面的SQL语句,看是否存在错误:

sql 复制代码
UPDATE "AA_Basic_User_Role"

SET "c_Password"=CONVERT(VARCHAR(32), HASHBYTES('MD5', 'Admin@123'), 2)

WHERE "c_StaffID"='P000002' AND "c_StaffName"='雷布斯'

于是豆老师给出了:

主句解析+错误排查+可直接运行的修正版

但由于给出的答案不够精准,于是补充提问:

补充:上面的语句是PG库的SQL语句

很快,豆老师给出了更加精准的回复:

02 先告诉你结论

你这条 SQL 在 PG 里完全不能运行,全是错误!

因为你写的是 SQL Server 语法,PG 不支持。

03 逐句解析错误(PG 环境下)

sql

sql 复制代码
UPDATE "AA_Basic_User_Job"

SET "c_Password"=CONVERT(VARCHAR(32), HASHBYTES('MD5', 'Admin@123'), 2)

WHERE "c_StaffID"='P000002' AND "c_StaffName"='雷布斯'

❶ CONVERT () 函数 → PG 没有这个函数

PG 不支持 CONVERT,这是 SQL Server 专属。

❷ HASHBYTES () 函数 → PG 也没有

HASHBYTES 是 SQL Server 用来做 MD5 的,PG 用 md5()。

❸ VARCHAR (32) 这种写法 PG 不报错,但没必要

❹ 双引号没问题(PG 支持双引号包裹表 / 字段名)

04 PG 中 正确的 MD5 更新语句

直接复制这条就能运行:

sql

sql 复制代码
UPDATE "AA_Basic_User_Role"

SET "c_Password" = md5('Admin@123')

WHERE "c_StaffID" = 'P000002' AND "c_StaffName" = '雷布斯';

效果完全一样:

把密码变成 32 位小写 MD5 字符串。

05 简单对比你就懂了

数据库 MD5 写法
SQL Server HASHBYTES ('MD5', ' 明文 ')
MySQL MD5 (' 明文 ')
PostgreSQL md5 (' 明文 ')

你之前的写法是 SQL Server 专用,放到 PG 里肯定报错。

06 最终正确语句(PG 100% 可用)

sql

sql 复制代码
UPDATE "AA_Basic_User_Role"

SET "c_Password" = md5('Admin@123')

WHERE "c_StaffID" = 'P000002';

(c_StaffID 一般唯一,c_StaffName 可删)

07 总结

原语句错误

用了 SQL Server 专属函数 CONVERT、HASHBYTES

PG 正确 MD5 函数:md5('明文')

直接用我给的最终语句即可执行成功

你在工作过程中有哪些使用AI的场景?效果如何?

欢迎在评论区留言讨论。

相关推荐
海浪仙人掌1 小时前
速动比率怎么分析?速动比率分析有哪些注意事项?
大数据·数据库·人工智能
企业数字化笔记2 小时前
固定资产历史数据怎么导入系统?Excel模板、字段映射和数据校验
android·java·数据库·后端
还是奇怪2 小时前
OpenAI GPT-5.6 构建指南拆解:创业公司如何用模型选择与 Responses API 降低 Agent 成本
java·数据库·人工智能·gpt
可涵不会debug2 小时前
LangChain 文本分割器详解:字符分割、Token 分割、硬约束递归分割实战
java·前端·数据库
风哥2号2 小时前
数据库教程FGMT21‑Oracle RAC+DG生产实战(1):Oracle19c/26ai for RHEL8/9安装配置+补丁
数据库·oracle
海鸥-w2 小时前
事务四大特性
数据库
旺仔不是程序员2 小时前
致命索引失效:索引列运算与函数索引不匹配
数据库·后端·面试
Htr_2 小时前
Cortex 使用指南:开源 API 知识层
前端·数据库·人工智能·重构·计算机外设
Roadinforest3 小时前
NoSQL的最终一致性:真的可靠吗?
数据库·nosql
敲代码的嘎仔3 小时前
用 Redis 合并写 + DelayQueue 延迟检测,把视频播放进度写库频率降到 1/60
java·开发语言·数据库·redis·缓存·音视频·高并发