Cómo convertir un valor de columna de varbinary(max)
a varchar
en forma legible por humanos?
Cómo convertir un valor de columna de varbinary(max)
a varchar
en forma legible por humanos?
Respuestas:
"Convertir a en varbinary
a varchar
" puede significar cosas diferentes.
Si varbinary es la representación binaria de una cadena en SQL Server (por ejemplo, devuelta al convertir varbinary
directamente o desde las funciones DecryptByPassPhrase
o DECOMPRESS
), puede CAST
hacerlo
declare @b varbinary(max)
set @b = 0x5468697320697320612074657374
select cast(@b as varchar(max)) /*Returns "This is a test"*/
Este es el equivalente a usar CONVERT
con un parámetro de estilo de 0
.
CONVERT(varchar(max), @b, 0)
Hay otros parámetros de estilo disponibles CONVERT
para diferentes requisitos, como se indica en otras respuestas.
SELECT CAST('This is a test' AS VARBINARY(100))
que está 0x5468697320697320612074657374
en mi intercalación predeterminada y la convierte de nuevo en la varchar
cadena. La respuesta de Gunjan devuelve la representación hexadecimal como una cadena ('5468697320697320612074657374') Presumiblemente, esta interpretación es correcta para la necesidad del OP, ya que la aceptaron.
CONVERT
tiene un parámetro de estilo para seleccionar la forma que desee (mi interpretación es el estilo predeterminado) .Por lo tanto, esta respuesta puede no ser la que necesita para su caso de uso en este momento, pero es correcta para otros casos de uso. Incluyendo el interrogador original que especificó "forma legible por humanos" no hexadecimal.
La siguiente expresión funcionó para mí:
SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);
Aquí hay más detalles sobre la elección del estilo (el tercer parámetro).
En realidad, la mejor respuesta es
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
el uso de " 2
" corta el " 0x
" al comienzo del varbinary
.
Prueba esto
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
Para una VARBINARY(MAX)
columna, tuve que usar NVARCHAR(MAX)
:
cast(Content as nvarchar(max))
O
CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value
Prueba lo siguiente, ya que estaba luchando con una publicación demasiado original [Aquí] [1]
bcp "SELECT CAST(BINARYCOL AS VARCHAR(MAX)) FROM OLTP_TABLE WHERE ID=123123 AND COMPANYID=123"
queryout "C:\Users\USER\Documents\ps_scripts\res.txt" -c -S myserver.db.com -U admin -P password
[1]: https://stackoverflow.com/questions/60525910/powershell-truncating-sql-query-output?noredirect=1#comment107077512_60525910