Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để cập nhật một trường varbinary với một giá trị cụ thể?

Hãy thử điều này:

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

(bạn không cần truyền một chuỗi lưu trữ giá trị hex thành varbinary - đó chỉ là theo mặc định, không có dấu ngoặc kép)

Câu hỏi đặt ra là, bạn đang tạo giá trị hex của mật khẩu đó như thế nào và bạn có đang sử dụng cùng một kiểu mã hóa để tạo nó như cách bạn đọc không? Nếu bạn đang có kế hoạch chuyển đổi dữ liệu đó trở lại thành một chuỗi, bạn sẽ cần một số mã để làm như vậy. Đây là một chức năng tôi đã viết để thực hiện điều này:

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 

Tuy nhiên, tôi không biết điều này sẽ hữu ích như thế nào đối với bạn, vì rất có thể bất kỳ ứng dụng nào đang sử dụng các trường này đang xử lý các giá trị khác với mong đợi của hàm này. Đối với bản ghi, hàm này nhận một giá trị varbinary mà ban đầu là chuỗi utf-8 và trả về giá trị varchar của chuỗi đó. Chúc bạn thành công!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server FOR JSON PATH Ví dụ (T-SQL)

  2. Đổi tên Tài khoản SA trong SQL Server (Ví dụ T-SQL)

  3. Các chỉ mục của SQL Server:Các yêu cầu chính, tác động đến hiệu suất và những cân nhắc

  4. Nhận root cha mẹ của con trong bảng phân cấp

  5. Hỗ trợ phương ngữ SQL 2008 cho NHibernate