我正在尝试快速比较两个独立应用程序中的大数据(一个在 MySQL 上,另一个在 SQL SERVER 上)。
myData字段在两个数据库中都是TEXT字段,我想看看它们之间这个字段的值是否发生了变化(myData 可以是几十万或几百万个字符长)
在 MySQL 中:
select sha1(myData) from myTable where mypk=1;
在 SQL 服务器中:
select right(convert([varchar](45), hashbytes('SHA1', cast(myData as nvarchar(max))), 1),40) from myTable where mypk=1;
我的哈希输出与两个数据库中的相同TEXT字段值不匹配。我怎样才能让它这样做?
以下是我迄今为止的假设:
- MySQL 将散列 TEXT,但 SQL-SERVER 不会(因此转换为 nvarchar)。
- MySQL 不允许转换为 nvarchar。
- 如果散列的输入类型不同,则输出将不同(在我的情况下,一个是 TEXT,另一个是 nvarchar)。
此外,如果使用 DB2 或 Oracle 而不是 SQL Server 会怎样?是否有一些简单的方法来解决这个问题(如果 q 的这一部分太模糊,很抱歉)?