我需要一个查询,它将使用 SHA1 对 TEXT 列进行编码。它不是用于密码,而是用作简单的更改状态检查。我截断了 40 个字符,因为它是一个宽松的支票。
此查询部分适用于 MS SQL SERVER:
RIGHT( CONVERT([varchar](45), HASHBYTES('SHA1', CAST(MY_XML as varchar(max))), 1) ,40) as HASH
客户需要这个才能在 PostgreSQL 中工作。
我看过
ENCODE
、DIGEST
等函数,但我似乎无法获得正确的语法。
这些不起作用:
DIGEST(CAST(MY_XML as varchar(max)),'SHA1')::varchar(40) as HASH
CAST(DIGEST(CAST(MY_XML as varchar),'SHA1') as varchar) as HASH
ENCODE(DIGEST(CAST(MY_XML as varchar(max)),'SHA1'),'hex') as HASH
ENCODE(DIGEST(MY_XML::text::bytea, 'sha1'), 'hex') as HASH
(最后一个来自How to calculate the real SHA1 of a text?)
我觉得我很亲近,但俗话说..