О, дорогой, я только что понял, что вы используете EncryptByPassPhrase.Каждый раз, когда он запускается, он генерирует новый симметричный ключ.Таким образом, выходной шифр будет отличаться при каждом запуске этого.
Взгляните.
select EncryptByPassPhrase('my passphrase','001')
, EncryptByPassPhrase('my passphrase','001')
Чтобы выполнить то, что вы пытаетесь сделать, вам необходимо расшифровать значение, которое даст вам двоичный код значения, с которого вы начали.
select *
, decryptbypassphrase('my passphrase', a.empno_encrypted)
, decryptbypassphrase('my passphrase', b.empno_encrypted)
from empsone a
join empstwo b on decryptbypassphrase('my passphrase', a.empno_encrypted) = decryptbypassphrase('my passphrase', b.empno_encrypted)
И если вам нужно вернуть исходное значение, вы просто приводите результат decryptbypassphrase к исходному типу данных.
select *
, convert(varchar(10), decryptbypassphrase('my passphrase', a.empno_encrypted))
, convert(varchar(10), decryptbypassphrase('my passphrase', b.empno_encrypted))
from empsone a
join empstwo b on decryptbypassphrase('my passphrase', a.empno_encrypted) = decryptbypassphrase('my passphrase', b.empno_encrypted)