TEXT 列的 SHA1 HASH - 在 PostgreSQL 中如何做

问题描述 投票:0回答:0

我需要一个查询,它将使用 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?

我觉得我很亲近,但俗话说..

postgresql hash casting sha1
© www.soinside.com 2019 - 2024. All rights reserved.