9

基本上我試圖給用戶一個特定的密碼,所以我可以測試系統上的一些功能,因爲我只有我們的管理員帳戶,我不能玩,我只是隨機選擇一個帳戶,所以我可以做我的測試。所以這是我在一個更新嘗試:如何使用特定值更新varbinary字段?

UPDATE dbo.Login 
SET 
    Salt=CAST('bPftidzyAQik' AS VARBINARY), 
    Password=CAST('0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B' AS VARBINARY) 
WHERE LoginID=10947 

運行良好但在數據庫中的代碼看起來日本的一個和其他的語法看起來不錯,但它不是我把在的價值,我想它使用我輸入的確切值以便我可以登錄。我該怎麼做?我已經嘗試了幾種不同的演員陣容,並沒有運氣轉換解決方案

+0

等待 - 這是爲什麼標記MySQL和SQL服務器?這是什麼? – 2011-12-19 21:43:42

+0

道歉我現在已經修復了標籤 – shicky 2011-12-19 21:58:57

回答

25

試試這個:

UPDATE dbo.Login 
SET 
    Salt=CAST('bPftidzyAQik' AS VARBINARY), 
    Password=0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B 
WHERE LoginID=10947 

(你不需要投一個字符串存儲十六進制值到VARBINARY - 這是它在默認情況下正是,不帶引號)

的問題是,你如何生成該密碼十六進制值,並且你是否使用相同的編碼來生成它,就像讀取它一樣?如果您打算將該數據轉換回字符串,則需要一些代碼才能完成此操作。這是我寫的,做這樣的功能:

CREATE FUNCTION ConvertBinary 
( 
    @value AS varbinary(max) 
) RETURNS VARCHAR(MAX) AS BEGIN 

    DECLARE @result AS varbinary(max), 
      @result2 AS varchar(max), 
      @idx AS bigint; 

    IF @value IS null 
     return null; 

    SELECT @result = @value; 
    SELECT @result2 = ''; 
    SELECT @idx = 1; 

    WHILE substring(@result, @idx, 1) != 0 AND @idx < len(@result) 
     BEGIN 
      SET @result2 = @result2 + cast(substring(@result,@idx,1) as char(1)); 
      SET @idx = @idx + 1; 
     END 

    RETURN @result2; 

END 

我不知道如何有幫助這將是對你,雖然,因爲它是非常有可能的,無論應用程序使用這些字段是不同處理的值比這個功能預計。爲了記錄,此函數採用最初爲utf-8字符串的varbinary值,並返回該字符串的varchar值。祝你好運!

+0

謝謝傑克正在做我的頭!現在所有解決方案,只是需要刪除口令上的引號:( – shicky 2011-12-19 21:58:23

2

由於您使用的2008年,試試這個:

UPDATE dbo.Login 
SET 
    Salt=CAST('bPftidzyAQik' AS VARBINARY), 
    Password=CONVERT(VARBINARY(MAX), '0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B', 1) 
WHERE LoginID=10947 

http://blogs.msdn.com/b/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx

+0

不幸的是,仍然是一樣的,字符串被改變,所以我沒有得到該字段中的已知密碼。 – shicky 2011-12-19 21:56:30