我正在尝试更新SQL SERVER数据库的密码。
表用户(登录名,密码)
代码:
SELECT
[login],
sys.fn_varbintohexsubstring(0, HashBytes('SHA1', [login]),1,0),
sys.fn_varbintohexsubstring(0, HashBytes('SHA1', 'usuario'),1,0)
FROM users
WHERE [login] = 'usuario';
结果是:
b63b34d5873bad93c92ec90c74ae0a4232e6473b
b665e217b51994789b02b1838e730d6b93baa30f
请注意" [登录]"包含' usuario'作为价值。
帮助
答案 0 :(得分:4)
您的login
列是nvarchar
列,因此所涉及的实际字节数不同。
请参阅:
SELECT
sys.fn_varbintohexsubstring(0, HashBytes('SHA1', N'usuario'),1,0),
sys.fn_varbintohexsubstring(0, HashBytes('SHA1', 'usuario'),1,0)
结果:
b63b34d5873bad93c92ec90c74ae0a4232e6473b
b665e217b51994789b02b1838e730d6b93baa30f
请参阅Constants:
Unicode字符串的格式类似于字符串,但前面有一个N标识符(N代表SQL-92标准中的国家语言)。 N前缀必须为大写。例如,
'Michél'
是字符常量,而N'Michél'
是Unicode常量