Bagaimana cara mengonversi nilai kolom dari varbinary(max)
menjadi varchar
dalam bentuk yang dapat dibaca manusia?
Bagaimana cara mengonversi nilai kolom dari varbinary(max)
menjadi varchar
dalam bentuk yang dapat dibaca manusia?
Jawaban:
"Mengubah a varbinary
menjadi varchar
" bisa memiliki arti yang berbeda.
Jika varbinary adalah representasi biner dari string di SQL Server (misalnya dikembalikan oleh casting untuk varbinary
langsung atau dari DecryptByPassPhrase
atau DECOMPRESS
fungsi) Anda hanya bisa CAST
itu
declare @b varbinary(max)
set @b = 0x5468697320697320612074657374
select cast(@b as varchar(max)) /*Returns "This is a test"*/
Ini sama CONVERT
dengan menggunakan dengan parameter gaya 0
.
CONVERT(varchar(max), @b, 0)
Parameter gaya lain tersedia dengan CONVERT
untuk persyaratan yang berbeda seperti yang dicatat dalam jawaban lain.
SELECT CAST('This is a test' AS VARBINARY(100))
yang ada 0x5468697320697320612074657374
di pemeriksaan default saya dan mengubahnya kembali ke varchar
string. Jawaban Gunjan mengembalikan representasi hex sebagai string ('5468697320697320612074657374') Agaknya interpretasi ini benar untuk kebutuhan OP karena mereka menerimanya.
CONVERT
memiliki parameter gaya untuk memilih cara yang Anda inginkan (interpretasi saya adalah gaya default) Jadi jawaban ini mungkin bukan yang Anda butuhkan untuk kasus penggunaan Anda saat ini, tetapi benar untuk kasus penggunaan lain. Termasuk penanya asli yang menentukan "bentuk yang dapat dibaca manusia" bukan hex.
Ekspresi berikut berhasil untuk saya:
SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);
Berikut adalah detail lebih lanjut tentang pilihan gaya (parameter ketiga).
Sebenarnya jawaban terbaik adalah
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
menggunakan " 2
" memotong " 0x
" di awal varbinary
.
Coba ini
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
Untuk VARBINARY(MAX)
kolom, saya harus menggunakan NVARCHAR(MAX)
:
cast(Content as nvarchar(max))
Atau
CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value
Silakan coba di bawah ini karena saya berjuang untuk posting yang terlalu asli [Disini] [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