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