Comment convertir une valeur de colonne de varbinary(max)
en varchar
sous une forme lisible par l'homme?
Comment convertir une valeur de colonne de varbinary(max)
en varchar
sous une forme lisible par l'homme?
Réponses:
«Convertir un varbinary
en un varchar
» peut signifier différentes choses.
Si le varbinary est la représentation binaire d'une chaîne dans SQL Server (par exemple retourné par coulée à varbinary
directement ou à partir des DecryptByPassPhrase
ou DECOMPRESS
fonctions) , vous pouvez tout CAST
ce
declare @b varbinary(max)
set @b = 0x5468697320697320612074657374
select cast(@b as varchar(max)) /*Returns "This is a test"*/
C'est l'équivalent de l'utilisation CONVERT
avec un paramètre de style de 0
.
CONVERT(varchar(max), @b, 0)
D'autres paramètres de style sont disponibles CONVERT
pour différentes exigences, comme indiqué dans d'autres réponses.
SELECT CAST('This is a test' AS VARBINARY(100))
qui se trouve 0x5468697320697320612074657374
dans mon classement par défaut et le convertit en varchar
chaîne. La réponse de Gunjan renvoie la représentation hexadécimale sous forme de chaîne ('5468697320697320612074657374'). Vraisemblablement, cette interprétation est correcte pour le besoin du PO tel qu'il l'a accepté.
CONVERT
a un paramètre de style pour sélectionner la façon dont vous le souhaitez (mon interprétation est le style par défaut) .Cette réponse n'est donc peut-être pas ce dont vous avez besoin pour votre cas d'utilisation pour le moment, mais elle est correcte pour d'autres cas d'utilisation. Y compris le questionneur original qui a spécifié "forme lisible par l'homme" non hexadécimal.
L'expression suivante a fonctionné pour moi:
SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);
Voici plus de détails sur le choix du style (le troisième paramètre).
En fait, la meilleure réponse est
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
en utilisant " 2
" coupe le " 0x
" au début de varbinary
.
Essaye ça
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
Pour une VARBINARY(MAX)
chronique, j'ai dû utiliser NVARCHAR(MAX)
:
cast(Content as nvarchar(max))
Ou
CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value
Jetez un œil à ce qui suit car j'avais du mal à publier un message trop original [Ici] [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