Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zaktualizować pole varbinary o określoną wartość?

Spróbuj tego:

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

(nie musisz rzutować łańcucha przechowującego wartość szesnastkową do varbinary - tak właśnie jest domyślnie, bez cudzysłowów)

Pytanie brzmi, w jaki sposób generujesz tę wartość szesnastkową hasła i czy używasz tego samego kodowania, aby je wygenerować, tak jak do odczytania? Jeśli planujesz przekonwertować te dane z powrotem na ciąg, będziesz potrzebować do tego kodu. Oto funkcja, którą napisałem, która to robi:

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 

Nie wiem jednak, na ile będzie to pomocne, ponieważ jest bardzo możliwe, że jakakolwiek aplikacja korzysta z tych pól, obsługuje wartości inaczej niż oczekuje ta funkcja. Dla rekordu ta funkcja pobiera wartość varbinary, która pierwotnie była ciągiem utf-8, i zwraca wartość varchar tego ciągu. Powodzenia!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Unikalne ograniczenie wielokolumnowe TSQL, które pozwala również na wiele wartości zerowych

  2. SQL Server SELECT INTO @variable?

  3. Importowanie Excela do bazy danych SQL za pomocą vb.net i asp.net

  4. Poziomy izolacji programu SQL Server:seria A

  5. Bazy danych systemu SQL Server — podstawowe pojęcia