Como converter um valor de coluna de varbinary(max)para varcharem formato legível?
Como converter um valor de coluna de varbinary(max)para varcharem formato legível?
Respostas:
"Converter a varbinaryem a varchar" pode significar coisas diferentes.
Se o varbinary é a representação binária de uma string em SQL Server (por exemplo, voltou lançando a varbinarydiretamente ou a partir dos DecryptByPassPhraseou DECOMPRESSfunções) você só pode CASTele
declare @b varbinary(max)
set @b = 0x5468697320697320612074657374
select cast(@b as varchar(max)) /*Returns "This is a test"*/
Isso equivale a usar CONVERTcom um parâmetro de estilo de 0.
CONVERT(varchar(max), @b, 0)
Outros parâmetros de estilo estão disponíveis CONVERTpara diferentes requisitos, conforme observado em outras respostas.
SELECT CAST('This is a test' AS VARBINARY(100))que está 0x5468697320697320612074657374em meu agrupamento padrão e o converte de volta para a varcharstring. A resposta de Gunjan retorna a representação hexadecimal como uma string ('5468697320697320612074657374'). Presumivelmente, essa interpretação está correta para a necessidade do OP conforme eles a aceitaram.
CONVERTtem um parâmetro de estilo para selecionar a maneira que você deseja (minha interpretação é o estilo padrão). Portanto, esta resposta pode não ser o que você precisa para o seu caso de uso no momento, mas é correta para outros casos de uso. Incluindo o questionador original que especificou "forma legível para humanos" e não hex.
A seguinte expressão funcionou para mim:
SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);
Aqui estão mais detalhes sobre a escolha do estilo (o terceiro parâmetro).
Na verdade, a melhor resposta é
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
usar " 2" corta o " 0x" no início do varbinary.
Tente isto
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
Para uma VARBINARY(MAX)coluna, tive que usar NVARCHAR(MAX):
cast(Content as nvarchar(max))
Ou
CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value
Dê uma olhada no abaixo, pois eu estava lutando para postar muito original [aqui] [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