Jak przekonwertować wartość kolumny z varbinary(max)
na varchar
w postaci czytelnej dla człowieka?
sql
sql-server
sql-server-2005
tsql
Bilgin Kılıç
źródło
źródło
Odpowiedzi:
„Zamiana a
varbinary
navarchar
” 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 funkcjiDecryptByPassPhrase
lubDECOMPRESS
), możesz po prostuCAST
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 stylu0
.Inne parametry stylu są dostępne
CONVERT
dla różnych wymagań, jak wspomniano w innych odpowiedziach.źródło
SELECT CAST('This is a test' AS VARBINARY(100))
które znajduje się0x5468697320697320612074657374
w moim domyślnym sortowaniu i konwertuje go z powrotem navarchar
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).
źródło
Właściwie najlepsza odpowiedź brzmi
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
użycie "
2
" odcina "0x
" na początkuvarbinary
.źródło
Spróbuj tego
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
źródło
W przypadku
VARBINARY(MAX)
kolumny musiałem użyćNVARCHAR(MAX)
:Lub
CONVERT(NVARCHAR(MAX), Content, 0) VARCHAR(MAX) didn't show the entire value
źródło
Próbowałem tego, zadziałało dla mnie:
declare @b2 VARBINARY(MAX) set @b2 = 0x54006800690073002000690073002000610020007400650073007400 SELECT CONVERT(nVARCHAR(1000), @b2, 0);
źródło
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
źródło