Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara memperbarui bidang varbinary dengan nilai tertentu?

Coba ini:

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

(Anda tidak perlu memasukkan string yang menyimpan nilai hex ke dalam varbinary - itulah yang secara default, tanpa tanda kutip)

Pertanyaannya adalah, bagaimana Anda menghasilkan nilai hex kata sandi itu, dan apakah Anda menggunakan penyandian yang sama untuk menghasilkannya seperti Anda membacanya? Jika Anda berencana mengubah data itu kembali menjadi string, Anda memerlukan beberapa kode untuk melakukannya. Inilah fungsi yang saya tulis yang melakukan ini:

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 

Saya tidak tahu seberapa membantu ini bagi Anda, karena sangat mungkin aplikasi apa pun yang menggunakan bidang ini menangani nilai secara berbeda dari yang diharapkan fungsi ini. Sebagai catatan, fungsi ini mengambil nilai varbinary yang awalnya adalah string utf-8, dan mengembalikan nilai varchar dari string tersebut. Semoga berhasil!



  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:cara mendapatkan nama database sebagai parameter dalam prosedur tersimpan

  2. Menjalankan prosedur tersimpan yang dijadwalkan pada SQL server

  3. Kinerja pendekatan yang berbeda untuk data berbasis waktu

  4. Menjalankan Paket SSIS menggunakan dtexec

  5. Masukkan Ke dalam Tabel Variabel CTE