2010-07-18 60 views

回答

19

一個varbinary列可以存儲任何東西。要存儲一個字符串的話,你必須將它轉換爲varbinary

declare @t table (id int identity, pwd varbinary(50)) 
insert into @t (pwd) values (cast('secret' as varbinary(50))) 

但對於密碼,varbinary列通常存儲某種類型的哈希值。例如,SHA1哈希使用HashBytes function

insert into @t (pwd) values (HashBytes('sha1', 'secret')); 

存儲單向哈希,而不是真正的密碼更安全。您可以檢查密碼是否匹配:

select * from @t where pwd = HashBytes('sha1', 'secret') 

但是,您無法通過查看錶來檢索密碼。所以只有最終用戶知道他的密碼,甚至連DBA都不能檢索它。

+0

我可以存儲原始文件像音頻文件? – JerryGoyal 2015-08-13 06:12:26

+0

@JerryGoyal是的。另一個通常做的事情是將更大的文件存儲在磁盤上,然後將文件路徑存儲在數據庫中 – iliketocode 2017-03-24 14:39:54

1

您將需要顯式轉換VARCHAR。

SELECT CAST(N'Test' as VARBINARY) 

SQL Server錯誤消息說。

允許從數據類型varchar到varbinary的隱式轉換不是 。

相關問題