如何将列值从 varbinary(max)转换为人类可读的形式的 varchar?
varbinary(max)
varchar
试试这个
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
“将 varbinary转换为 varchar”可能意味着不同的事情。
varbinary
如果 varbinary 是 SQL Server 中字符串的二进制表示(例如,通过直接转换为 varbinary或者从 DecryptByPassPhrase或 DECOMPRESS函数返回) ,那么只需要 CAST即可
DecryptByPassPhrase
DECOMPRESS
CAST
declare @b varbinary(max) set @b = 0x5468697320697320612074657374 select cast(@b as varchar(max)) /*Returns "This is a test"*/
This is the equivalent of using CONVERT with a style parameter of 0.
CONVERT
0
CONVERT(varchar(max), @b, 0)
CONVERT还提供了其他样式参数,用于满足其他答案中提到的不同需求。
下面这句话对我很有用:
SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);
这里 是关于样式选择(第三个参数)的更多细节。
其实最好的答案是
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
using "2" cuts off the "0x" at the start of the varbinary.
2
0x
对于 VARBINARY(MAX)专栏,我必须使用 NVARCHAR(MAX):
VARBINARY(MAX)
NVARCHAR(MAX)
cast(Content as nvarchar(max))
或者
CONVERT(NVARCHAR(MAX), Content, 0) VARCHAR(MAX) didn't show the entire value
我试过了,很管用:
declare @b2 VARBINARY(MAX) set @b2 = 0x54006800690073002000690073002000610020007400650073007400 SELECT CONVERT(nVARCHAR(1000), @b2, 0);
在我挣扎的时候试试下面
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
参考资料: 原帖