SQL Server 上的 varbinary 到字符串

问题描述 投票:0回答:8

如何以人类可读的形式将列值从

varbinary(max)
转换为
varchar

sql sql-server sql-server-2005 t-sql
8个回答
194
投票

以下表达方式对我有用:

SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);

这里是有关样式选择(第三个参数)的更多详细信息。


125
投票

“将

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

如果 varbinary 是 SQL Server 中字符串的二进制表示形式(例如通过直接转换为

varbinary
或从
DecryptByPassPhrase
DECOMPRESS
函数返回),您可以直接
CAST

declare @b varbinary(max)
set @b = 0x5468697320697320612074657374

select cast(@b as varchar(max)) /*Returns "This is a test"*/

这相当于使用

CONVERT
和样式参数
0

CONVERT(varchar(max), @b, 0)

其他样式参数可通过

CONVERT
来满足其他答案中所述的不同要求。


87
投票

其实最好的答案是

SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);

使用“

2
”切断
0x
开头的“
varbinary
”。


16
投票

试试这个

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

6
投票

我尝试过这个,它对我有用:

declare @b2 VARBINARY(MAX) 
set @b2 = 0x54006800690073002000690073002000610020007400650073007400
SELECT CONVERT(nVARCHAR(1000), @b2, 0);

3
投票

对于

VARBINARY(MAX)
列,我必须使用
NVARCHAR(MAX)
:

cast(Content as nvarchar(max))

或者

CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value

3
投票

尝试一下下面的内容,因为我正在努力

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

参考:原帖


0
投票

将 YOURFIELD 替换为您的字段。如果您愿意,您可以省略 ISNULL 部分。

 SELECT ISNULL(CAST(CAST(YOURFIELD AS VARBINARY(MAX)) AS
 NVARCHAR(MAX)),'NA') AS YOURFIELD FROM YOURTABLE
© www.soinside.com 2019 - 2024. All rights reserved.