Prøv dette:
UPDATE dbo.Login
SET
Salt=CAST('bPftidzyAQik' AS VARBINARY),
Password=0x2B89C2954E18E15759545A421D243E251784FA009E46F7A163926247FDB945F85F095DBB1FFF5B2B43A6ADAE27B8C46E176902412C4F8943E39528FF94E0DD5B
WHERE LoginID=10947
(du behøver ikke at caste en streng, der gemmer en hex-værdi i varbinary - det er bare, hvad det er som standard, uden anførselstegn)
Spørgsmålet er, hvordan genererer du den hex-kodeværdi, og bruger du den samme kodning til at generere den, som du skal læse den? Hvis du planlægger at konvertere disse data tilbage til en streng, skal du bruge noget kode for at gøre det. Her er en funktion, jeg skrev, der gør dette:
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
Jeg ved dog ikke, hvor nyttigt dette vil være for dig, da det er meget muligt, at enhver app, der bruger disse felter, håndterer værdierne anderledes, end denne funktion forventer. For en ordens skyld tager denne funktion en varbinær værdi, som oprindeligt var en utf-8-streng, og returnerer varchar-værdien for den streng. Held og lykke!