【发布时间】:2019-04-05 14:24:49
【问题描述】:
如何更改此代码以使其在 SQL Server 中工作?这目前在 SQL Server 中不起作用。
该语句用于计算 Oracle 中的校验和。如何使其适应 SQL Server?
UPDATE Work
set ETL_CHECKSUM = HASHBYTES('MD5',concat(
Branch, '|',
Group, '|',
Number, '|',
Column, '|',
dDate, '|',
Basis, '|',
per, '|',
Mult, '|',
nDate, '|',
Key, '|',
INSERT_TS))
【问题讨论】:
-
如何使 what 在 SQL Server 中工作?这不是 SQL。我假设某些数据库允许像
dbms_obfuscation_toolkit.md5(input => UTL_RAW.cast_to_raw(...))这样的调用。最好解释一下你想做什么 -I want to hash a row's values -
在 SQL Server 中,您可以使用 HASHBYTES 函数对值进行加密散列。正如文档所解释的,在最新版本中仅支持 SHA2,因为早期的哈希算法是不安全的。旧算法仍然有效,但会发出警告
-
Shore,MD5 已过时且不安全。但它根本不会产生任何警告。您在哪里收到警告?
-
@Sebastian 在文档中
Beginning with SQL Server 2016 (13.x), all algorithms other than SHA2_256, and SHA2_512 are deprecated. Older algorithms (not recommended) will continue working, but they will raise a deprecation event. -
@user10260750 你想做什么?无法验证计算中包含自身的哈希,几乎保证不同于其原始值。下次您尝试计算它时,它会有所不同。这意味着它没用
标签: sql-server tsql ssis