我想将hashbytes(sha2_256)函数返回的一段哈希字符串转换为mssqlserver中的整数。
此查询返回 '6BDA'
```
SELECT (SUBSTRING(CONVERT(VARCHAR(64), HASHBYTES('SHA2_256', CAST(12.5 AS VARCHAR(64))), 2), 61, 4)) as tmp
但当我尝试将其转换为int时,会产生一个错误:
--Conversion failed when converting the varchar value '6BDA' to data type int.
SELECT (CONVERT(int, SUBSTRING(CONVERT(VARCHAR(64), HASHBYTES('SHA2_256', CAST(12.5 AS VARCHAR(64))), 2), 61, 4))) as tmp
如果我尝试将子字符串转换为varbinary,然后再转换为int,结果与27610不同:
--Returns 910312513
SELECT (CONVERT(int, CONVERT(varbinary, SUBSTRING(CONVERT(VARCHAR(64), HASHBYTES('SHA2_256', CAST(12.5 AS VARCHAR(64))), 2), 61, 4)))) as tmp
在snowflake中,我可以用 `to_number` 功能:
下面的查询转换为 `'6BDA'` 到27610。如何使用sql server获得相同的结果?
SELECT to_number(substr(sha2(TO_VARCHAR(ABS(12.5)), 256), 61), 'xxxx')
1条答案
按热度按时间v2g6jxz61#
试试这个
我用以下ddl测试了它:
看看这把小提琴是怎么用的。