Comment convertir une valeur de colonne de varbinary(max)en varcharsous une forme lisible par l'homme?
Comment convertir une valeur de colonne de varbinary(max)en varcharsous une forme lisible par l'homme?
Réponses:
«Convertir un varbinaryen 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 à varbinarydirectement ou à partir des DecryptByPassPhraseou DECOMPRESSfonctions) , vous pouvez tout CASTce
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 CONVERTavec un paramètre de style de 0.
CONVERT(varchar(max), @b, 0)
D'autres paramètres de style sont disponibles CONVERTpour différentes exigences, comme indiqué dans d'autres réponses.
SELECT CAST('This is a test' AS VARBINARY(100))qui se trouve 0x5468697320697320612074657374dans mon classement par défaut et le convertit en varcharchaî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é.
CONVERTa 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