我與SQL Server 2012的工作,有表字段定義爲:T-SQL HASHBYTES功能和整理
NVARCHAR(32)
,但需要在它
存儲NVARCHAR(1024)
價值,我不能夠改變列長度。
我有一個將填充此字段的過程。同時,如果存在這樣的價值的領域,它將「做某事」,如果存在具有這種價值的領域,它將「做任何事」。
要與長度,我決定用HashBytes功能如下解決這個問題:
DECLARE @HashThis nvarchar(1024);
SELECT @HashThis = CONVERT(nvarchar(1024),'dslfdkjLK85kldhnv$n000#knf');
SELECT HASHBYTES('SHA1', @HashThis);
GO
我已閱讀,這取決於你的數據庫排序規則,你可以有相同的價值觀不同的散列返回。那麼,是否有一種方法可以爲函數指定排序規則,以便不依賴於數據庫排序規則。
另外,我的想法有什麼問題嗎?
我不明白你的問題。使用較長數據類型的問題究竟是什麼?你可以發佈一些代碼來顯示你的問題,而不是你的解決方案嗎? – Pondlife 2013-03-07 14:27:14
我有一個表nvarchar(32)列「a」。無論如何,我需要存儲需要更多空間的數據,而且我不允許更改表格。由於這些數據僅用於同情,我決定對其進行散列。當它被散列時,它會變小,但我想知道是否可以面對任何問題,因爲我之前做過這樣的事情。 – gotqn 2013-03-07 14:53:32
我想你可能會對哈希做什麼感到困惑:它不會壓縮數據,也沒有辦法'顛倒'哈希來重新獲得原始值。維基百科有一個[很好的概述](http://en.wikipedia.org/wiki/Hash_function)哈希以及它們的用途。我認爲你需要在這裏重新考慮你的方法,它不完全清楚你在做什麼,但沒有辦法將1024個字符合併到32個字符中。 – Pondlife 2013-03-07 15:43:00