The issue is NVARCHAR
and VARCHAR
get hashed to different values. Both HASHBYTES('MD5', 'Analytics'),
and [WordHash]
are hashes of VARCHAR
values but [Word]
is a NVARCHAR
.
select HASHBYTES('MD5', 'Analytics'), 'varchar'
union
select HASHBYTES('MD5', N'Analytics'), 'nvarchar'
--outputs
------------------------------------- --------
0xA768CAA988605A2846599CF7E2D0C26A varchar
0xF4AFA5FEF805F7F5163EC6402BAF61FF nvarchar
To fix this you must either change [Word]
to be VARCHAR
or re-compute [WordHash]
using NVARCHAR
values.
Some useful further reading: Comparing SQL Server HASHBYTES function and .Net hashing