| 資料庫 | 函數/語法 | 範例 | 結果長度 |
|---|---|---|---|
| MySQL | MD5(str) | SELECT MD5('hello'); | 32 字元 Hex |
| SQL Server | RIGHT(sys.fn_VarBinToHexStr(HASHBYTES('MD5', CAST(str AS VARBINARY))), 32) | SELECT RIGHT(sys.fn_VarBinToHexStr(HASHBYTES('MD5', CAST('hello' AS VARBINARY))), 32); | 32 字元 Hex |
MD5(),直接回傳 32 字元十六進位字串NULL 輸入回傳 NULLHASHBYTES + sys.fn_VarBinToHexStrHASHBYTES('MD5', ...) 回傳 VARBINARY(16)sys.fn_VarBinToHexStr 轉為 0x... 格式,故用 RIGHT(..., 32) 取純 HexCAST(... AS VARBINARY) 或 CONVERTCONVERT(VARCHAR(32), HASHBYTES('MD5', ...), 2) (樣式 2 = 無 0x 前綴)
-- MySQL
SELECT MD5('test123'); -- cc03e747a6afbbcbf8be7668acfebee5
-- SQL Server (2016+ 簡潔寫法)
SELECT CONVERT(VARCHAR(32), HASHBYTES('MD5', CAST('test123' AS VARBINARY)), 2);
-- cc03e747a6afbbcbf8be7668acfebee5
BCRYPT、ARGON2、PBKDF2 (SQL Server 2017+ HASHBYTES('SHA2_256', ...) 配合 Salt/迭代)雙平台語法差異源於函數庫設計哲學不同:MySQL 傾向內建常用雜湊;SQL Server 採模組化 HASHBYTES 支援多種演算法 (MD5, SHA1, SHA2_256/512)。