我正在尝试在MySQL中将字符串散列为64位值(bigint)。我知道MD5()函数,它返回一个128位散列作为二进制字符串。我很乐意获取这个结果的最低或最高64位。但是,我无法弄清楚如何从二进制字符串类型转换为任何类型的数字类型。任何指针?在MySQL中将二进制字符串转换为bigint?
8
A
回答
14
使用CONV()
函数MD5哈希转换从基地16到基地10 CAST
将其转换为一个数字:
select cast(conv(substring(md5(id), 1, 16), 16, 10) as unsigned integer) from SomeTable;
2
CREATE FUNCTION dbo.HexStrToVarBinary(@hexstr varchar(8000))
RETURNS varbinary(8000)
AS
BEGIN
DECLARE @hex char(1), @i int, @place bigint, @a bigint
SET @i = LEN(@hexstr)
set @place = convert(bigint,1)
SET @a = convert(bigint, 0)
WHILE (@i > 0 AND (substring(@hexstr, @i, 1) like '[0-9A-Fa-f]'))
BEGIN
SET @hex = SUBSTRING(@hexstr, @i, 1)
SET @a = @a +
convert(bigint, CASE WHEN @hex LIKE '[0-9]'
THEN CAST(@hex as int)
ELSE CAST(ASCII(UPPER(@hex))-55 as int) end * @place)
set @place = @place * convert(bigint,16)
SET @i = @i - 1
END
RETURN convert(varbinary(8000),@a)
END
GO
+0
不错!希望有内置的东西。 – 2009-08-11 11:24:04
+0
现在反过来请:D:@ :) – 2014-01-28 06:19:55
相关问题
- 1. 将二进制转换为字符串
- 2. Python将二进制字符串转换为二进制int
- 3. 将字符串转换为二进制,并在Python中将二进制转换为十进制?
- 4. 将二进制字符串转换为文本字符串
- 5. 转换字符串“s”为二进制
- 6. 将字符串转换二进制为10进制
- 7. 将二进制长字符串转换为十六进制c#
- 8. 将二进制字符串转换为十进制c字符串#
- 9. 将十六进制字符串转换为32位二进制字符串
- 10. 将十六进制字符串转换为二进制字符串
- 11. 将字节转换为c中的二进制字符串#
- 12. 如何将二进制转换为字符或字符串?,Java
- 13. bigint转换为二进制(8)列的二进制表示
- 14. Go - 如何将二进制字符串转换为二进制字节?
- 15. 将SQL二进制数据转换为C#中的字符串
- 16. 将Base64转换为Java中的二进制字符串
- 17. 将二进制字符串转换为有符号整数 - Python
- 18. 在Ruby中将二进制字符串转换为十六进制
- 19. C++将字节二进制值转换为字符串
- 20. 将二进制字符串表示转换为字节数组
- 21. 将ascii字符十进制值的字符串转换为二进制值
- 22. 将表示二进制的字符串转换为二进制python
- 23. 将字符串转换为十进制
- 24. 字符串二进制转换
- 25. Python从二进制字符串转换为十六进制
- 26. 转换十六进制字符串为二进制的SQL Server
- 27. 如何将二进制int转换为字符串?
- 28. 将二进制数据转换为字符串
- 29. 将保存二进制的字符串转换为浮点数
- 30. java:将二进制字符串转换为int
不错,这就是我要找的。我认为我不需要演员阵容,或者想投向bigint,但conv()函数实际上是我错过的。 – 2009-08-11 11:26:03
最后一个注意事项。然后我在Java中访问这个数字值。 Java整数类型被签名,并且conv()的结果总是正数,这意味着它在某些情况下会溢出。对于那些将这作为签名长的人来说,你确实需要演员阵容,并且投射到“签名”才能实现。 – 2009-08-25 09:51:09