Je transfère mes données de SQL Server à MySQL. Les données sont transférées sans problème, mais j'essaie de trouver un moyen de valider l'intégrité des données entre SQL Server et MySQL. J'ai des problèmes avec les types de données suivants VARCHAR y NVARCHAR . Puisque ceux-ci vont de 255 à MAX . J'essaie d'effectuer une comparaison de hachage entre ces types de données, mais elles ne correspondent pas.
Pour le tester, j'ai essayé ceci :
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)
En essayant la même chose dans SQL Server, on obtient quelque chose de différent :
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
Comme vous pouvez le voir, aucune des sorties dans SQL Server ne correspond à MySQL. J'ai donc besoin de conseils pour savoir comment effectuer cette comparaison de données.