decrypt convert array sql sql-server string varbinary

array - SQL Server convertir varbinary a cadena



sql server decode varbinary (6)

Aquí hay un ejemplo simple que escribí para convertir y volver a convertir utilizando los 2 métodos de conversión, también lo verifiqué con una cadena fija

declarar @ VB1 VARBINARY (500), @ VB2 VARBINARY (500), @ VB3 VARBINARY (500)

declarar @ S1 VARCHAR (500)

SET @ VB1 = HASHBYTES (''SHA1'', ''Test'')

SET @ S1 = CONVERTIR (varchar (500), @ VB1,2)

SET @ VB2 = CONVERTIR (varbinary (500), @ S1,2)

SET @ VB3 = CONVERTIR (varbinary (500), ''640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA'', 2)

SELECCIONE @ VB1, @ S1, @ VB2, @ VB3

IF @ VB1 = @ VB2 IMPRIMIR ''They Match (2)''

IF @ VB1 = @ VB3 IMPRIMIR ''They Match (3)''

PRINT str (Len (@ VB1))

IMPRIMIR str (Len (@ S1))

PRINT str (Len (@ VB2))

SET @ VB1 = HASHBYTES (''SHA1'', ''Test'')

SET @ S1 = CONVERTIR (varchar (500), @ VB1,1)

SET @ VB2 = CONVERTIR (varbinary (500), @ S1,1)

SELECCIONAR @ VB1, @ S1, @ VB2

IF @ VB1 = @ VB2 IMPRIMIR ''They Match (1)''

PRINT str (Len (@ VB1))

IMPRIMIR str (Len (@ S1))

PRINT str (Len (@ VB2))

y la salida

||| De la forma

(1 fila (s) afectadas)

Ellos coinciden (2)

Ellos coinciden (3)

20 40 20

|| 0x640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA | 0x640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA | 0x640AB2BAE07BEDC4C163F679A746F775

(1 fila (s) afectadas)

Ellos coinciden (1)

20 42 20

Quiero hacer la conversión en T-SQL de un tipo varbinary tipo de cadena

Aquí hay un ejemplo :

Primero tengo este varbinary

0x21232F297A57A5A743894A0E4A801FC3

Y luego quiero convertirlo a

21232f297a57a5a743894a0e4a801fc3

¿Como hacer esto?


Busqué una respuesta en todas partes y finalmente esto me funcionó:

SELECT Lower(Substring(MASTER.dbo.Fn_varbintohexstr(0x21232F297A57A5A743894A0E4A801FC3), 3, 8000))

Salidas a (cadena):

21232f297a57a5a743894a0e4a801fc3

Puede usarlo en sus condiciones WHERE o JOIN también en caso de que quiera comparar / hacer coincidir registros varbinary con cadenas


Esto funciona tanto en SQL 2005 como en 2008:

declare @source varbinary(max); set @source = 0x21232F297A57A5A743894A0E4A801FC3; select cast('''' as xml).value(''xs:hexBinary(sql:variable("@source"))'', ''varchar(max)'');


Sé que esta es una pregunta antigua, pero aquí hay un enfoque alternativo que he encontrado más útil en algunas situaciones. Creo que la función master.dbo.fn_varbintohexstr ha estado disponible en SQL Server al menos desde SQL2K. Añadiéndolo aquí solo para completar. A algunos lectores también les puede resultar instructivo mirar el código fuente de esta función.

declare @source varbinary(max); set @source = 0x21232F297A57A5A743894A0E4A801FC3; select varbin_source = @source ,string_result = master.dbo.fn_varbintohexstr (@source)


Si desea convertir un solo valor VARBINARY en VARCHAR ( STRING ), puede hacerlo declarando una variable como esta:

DECLARE @var VARBINARY(MAX) SET @var = 0x21232F297A57A5A743894A0E4A801FC3 SELECT CAST(@var AS VARCHAR(MAX))

Si está intentando seleccionar de la columna de la tabla, puede hacer lo siguiente:

SELECT CAST(myBinaryCol AS VARCHAR(MAX)) FROM myTable


Tratar:

DECLARE @varbinaryField varbinary(max); SET @varbinaryField = 0x21232F297A57A5A743894A0E4A801FC3; SELECT CONVERT(varchar(max),@varbinaryField,2), @varbinaryField

ACTUALIZADO: Para SQL Server 2008