等价T-SQL格式

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

如何在python中进行等价的哈希(改变sql部分是不可能的,只能模仿python中的行为)。

SELECT HASHBYTES('SHA2_256', FORMAT(1234, ''))
output: 0x4F37C061F1854F9682F543FECB5EE9D652C803235970202DE97C6E40C8361766

这是不同的。

SELECT HASHBYTES('SHA2_256','1234')
SELECT HASHBYTES('SHA2_256',CAST(1234 as VARCHAR(100)))
output: 0x03AC674216F3E15C761EE1A5E255F067953623C8B388B4459E13F978D7C846F4

如何在python中实现第一个输出?目前。

from hashlib import sha256

sha256('1234'.encode()).hexdigest().upper()
output: 03AC674216F3E15C761EE1A5E255F067953623C8B388B4459E13F978D7C846F4
python sql-server tsql hash
1个回答
2
投票

结果是 Format( 1234, '' ) 是一个 NVarChar:

select sql_variant_property(FORMAT(1234, ''), 'basetype');

你可以 cast 的值,以获得所需的结果。

SELECT HASHBYTES('SHA2_256',CAST(FORMAT(1234, '') as VARCHAR(100)));
© www.soinside.com 2019 - 2024. All rights reserved.