我在SQL Server 2012中工作。我試圖從用戶名中「計算」一個唯一的數字,以便在查詢中掩蓋其他用戶的用戶名。我發現了uniqueidentifier數據類型,並且想知道這是否對於查詢的每次運行都保持靜態,即使在不同的機器上。正在轉換爲uniqueidentifier數據類型static?
例如,如果我們有XYZ的用戶名,我做了一些字符串操作混雜的用戶名起來,保持它從別人不同的方式,然後將其轉換爲VARBINARY:0x78797A。但是,根據用戶名的長度,這顯然會有所不同。我不希望用戶能夠看到很長的varbinary集合並假設(可能正確)它是最長用戶名的人。
然後,我將此varbinary轉換爲uniqueidentifier數據類型。運行這幾次後,它看起來好像這個新值將保持靜態,但我不確定這是否是因爲我在同一臺機器上運行它。無論何時運行或在哪裏,我都需要靜態的。在任何情況下,uniqueidentifier是否有可能在相同輸入中產生不同的值?
將varbinary轉換爲uniqueidentifier是確定性的。 但這似乎不是一個有用的方法。 你如何處理長於16個字符的名字?如果更短,你如何將varbinary填充到16個字節?零將仍然顯示長度。 http://rextester.com/NFTDHM25938 –
@MartinSmith,感謝它是確定性的信息!您說得對,這不是最有用的方法,但我沒有權限使用某些其他類型的加密功能的SQL Server功能。就我的目的而言,16個字符的限制不會成爲問題,並且顯示長度的零與我認爲的相關性會減少很多。我很欣賞反饋! –
請注意,任何散列函數(甚至一個長度如SHA2_512)都有可能發生衝突 – SeanC