Jak przekonwertować wartość kolumny z varbinary(max)
na varchar
w postaci czytelnej dla człowieka?
Jak przekonwertować wartość kolumny z varbinary(max)
na varchar
w postaci czytelnej dla człowieka?
Odpowiedzi:
„Zamiana a varbinary
na varchar
” może oznaczać różne rzeczy.
Jeśli varbinary jest binarną reprezentacją ciągu w SQL Server (na przykład zwracany przez rzutowanie varbinary
bezpośrednio lub z funkcji DecryptByPassPhrase
lub DECOMPRESS
), możesz po prostu CAST
to zrobić
declare @b varbinary(max)
set @b = 0x5468697320697320612074657374
select cast(@b as varchar(max)) /*Returns "This is a test"*/
Jest to odpowiednik użycia CONVERT
z parametrem stylu 0
.
CONVERT(varchar(max), @b, 0)
Inne parametry stylu są dostępne CONVERT
dla różnych wymagań, jak wspomniano w innych odpowiedziach.
SELECT CAST('This is a test' AS VARBINARY(100))
które znajduje się 0x5468697320697320612074657374
w moim domyślnym sortowaniu i konwertuje go z powrotem na varchar
ciąg. Odpowiedź Gunjana zwraca reprezentację szesnastkową jako ciąg ('5468697320697320612074657374'). Przypuszczalnie ta interpretacja jest poprawna dla potrzeb OP, ponieważ ją zaakceptowali.
CONVERT
ma parametr stylu, aby wybrać sposób, w jaki chcesz (moja interpretacja jest stylem domyślnym). Więc ta odpowiedź może nie być tym, czego potrzebujesz w danym przypadku, ale jest poprawna dla innych przypadków użycia. Włącznie z pytającym, który określił „formę czytelną dla człowieka”, a nie szesnastkowy.
Działało dla mnie następujące wyrażenie:
SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);
Oto więcej szczegółów na temat wyboru stylu (trzeci parametr).
Właściwie najlepsza odpowiedź brzmi
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
użycie " 2
" odcina " 0x
" na początku varbinary
.
Spróbuj tego
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
W przypadku VARBINARY(MAX)
kolumny musiałem użyć NVARCHAR(MAX)
:
cast(Content as nvarchar(max))
Lub
CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value
Spróbuj poniżej, ponieważ zmagałem się ze zbyt oryginalnym postem [Tutaj] [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]: /programming/60525910/powershell-truncating-sql-query-output?noredirect=1#comment107077512_60525910