gpt4 book ai didi

mysql - MySQL 中等效的 Hashbytes

转载 作者:行者123 更新时间:2023-11-29 03:17:46 26 4
gpt4 key购买 nike

我正在将我的数据从 SQL Server 移动到 MySQL。数据移动没有任何问题,但我正在尝试想出一种方法来验证 SQL Server 和 MySQL 之间数据的完整性。我在数据类型 VARCHARNVARCHAR 方面遇到问题。因为它们的范围从 255 到 MAX。我正在尝试对这些数据类型进行哈希比较,但它们不匹配。

出于测试目的,我尝试了这个:

mysql> SET @test := repeat('t',50000);
Query OK, 0 rows affected (0.00 sec)

mysql> select md5(@test);
+----------------------------------+
| md5(@test) |
+----------------------------------+
| a9cf60d59fe2fb94a84bc106eca028be |
+----------------------------------+
1 row in set (0.01 sec)

在 SQL Server 中尝试相同的方法会得到不同的结果:

DECLARE @Test NVARCHAR(MAX) = REPLICATE(CONVERT(NVARCHAR(MAX), N't'), 50000);

SELECT HashBytes('MD5', CONVERT(varchar, @Test));

0x3C48C287BC783516AC89297848A104FE

select LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(varchar, @Test)), 2));

3c48c287bc783516ac89297848a104fe

SELECT CONVERT(VARCHAR(32),HashBytes('MD5', @Test),2);

40752EB301B41EEAEB309348CE9711D6

如您所见,SQL Server 中的输出均与 MySQL 不匹配。因此,在这里寻找一些关于如何进行数据比较的指导。

最佳答案

sql server 数据库文件以一页为数据存储单位只有8KBvarcharLEN的限制为 8000,因此按照您的测试示例,您将无法获得每页 50000 个字符的十六进制结果。相反,它是根据 8000 个字符的字符串长度计算的 @Test 示例的结果。

关于mysql - MySQL 中等效的 Hashbytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52032224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com