如何以人类可读的形式将列值从
varbinary(max)
转换为 varchar
?
“将
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
来满足其他答案中所述的不同要求。
其实最好的答案是
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
使用“
2
”切断0x
开头的“varbinary
”。
试试这个
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
我尝试过这个,它对我有用:
declare @b2 VARBINARY(MAX)
set @b2 = 0x54006800690073002000690073002000610020007400650073007400
SELECT CONVERT(nVARCHAR(1000), @b2, 0);
对于
VARBINARY(MAX)
列,我必须使用 NVARCHAR(MAX)
:
cast(Content as nvarchar(max))
或者
CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value
尝试一下下面的内容,因为我正在努力
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
参考:原帖
将 YOURFIELD 替换为您的字段。如果您愿意,您可以省略 ISNULL 部分。
SELECT ISNULL(CAST(CAST(YOURFIELD AS VARBINARY(MAX)) AS
NVARCHAR(MAX)),'NA') AS YOURFIELD FROM YOURTABLE