Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да актуализирам varbinary поле с конкретна стойност?

Опитайте това:

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 

Не знам обаче доколко това ще ви бъде полезно, тъй като е много възможно каквото и приложение да използва тези полета да обработва стойностите по различен начин, отколкото тази функция очаква. За запис тази функция приема varbinary стойност, която първоначално е била utf-8 низ, и връща стойността varchar на този низ. Успех!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да върна XML от SQL Server 2008, който е структуриран с множество селекции, споделящи общ родител

  2. SQL актуализация от една таблица в друга въз основа на съвпадение на идентификатор

  3. Зареждане на SQL Express от WiX?

  4. Вземете пространствени точки в радиус с помощта на NHibernate Spatial

  5. Вземете ConnectionString от app.config в c#