在 SQLServer 上将 varbinytostring 转换为 string

如何将列值从 varbinary(max)转换为人类可读的形式的 varchar

358244 次浏览

试试这个

SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)

“将 varbinary转换为 varchar”可能意味着不同的事情。

如果 varbinary 是 SQL Server 中字符串的二进制表示(例如,通过直接转换为 varbinary或者从 DecryptByPassPhraseDECOMPRESS函数返回) ,那么只需要 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(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.

对于 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

参考资料: 原帖