SQL Server将varbinary转换为字符串

str*_*oir 48 sql sql-server string varbinary

我想在T-SQL中从varbinary类型转换为字符串类型

这是一个例子:

首先,我得到了这个 varbinary

0x21232F297A57A5A743894A0E4A801FC3
Run Code Online (Sandbox Code Playgroud)

然后我想把它转换成

21232f297a57a5a743894a0e4a801fc3
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

And*_*ttó 78

尝试:

DECLARE @varbinaryField varbinary(max);
SET @varbinaryField = 0x21232F297A57A5A743894A0E4A801FC3;

SELECT CONVERT(varchar(max),@varbinaryField,2), 
@varbinaryField
Run Code Online (Sandbox Code Playgroud)

更新:对于SQL Server 2008

  • 如果要保留'0x'前缀,请在CONVERT表达式中使用1样式标志(而不是2).`SELECT CONVERT(VARCHAR(MAX),MyBinaryField,1)FROM MyTable WHERE ID = 123456;`. (6认同)
  • 直接从表中检索时也可以使用它:`SELECT CONVERT(VARCHAR(MAX),MyBinaryField,2)FROM MyTable WHERE ID = 123456` (2认同)
  • 以及如何检查它是否为空内联?`声明@varbinaryField varbinary(max); 设置@varbinaryField = 0x21232F297A57A5A743894A0E4A801FC3;SELECT CONVERT(varchar(max), ISNULL(@varbinaryField, 'value is NULL'), 2), @varbinaryField` 引发错误`从数据类型 varchar 到 varbinary(max) 的隐式转换是不允许的。使用 CONVERT 函数运行此查询。` (2认同)

Cra*_*ied 11

我知道这是一个老问题,但这里有一种替代方法,我发现在某些情况下更有用.我相信master.dbo.fn_varbintohexstr函数至少从SQL2K开始在SQL Server中可用.在此添加它只是为了完整性.有些读者可能会发现查看此函数的源代码很有帮助.

declare @source varbinary(max);
set @source = 0x21232F297A57A5A743894A0E4A801FC3;
select varbin_source = @source
,string_result = master.dbo.fn_varbintohexstr (@source)
Run Code Online (Sandbox Code Playgroud)


him*_*056 6

如果要将单个VARBINARY值转换为VARCHAR(STRING),可以通过声明如下变量来完成:

DECLARE @var VARBINARY(MAX)
SET @var = 0x21232F297A57A5A743894A0E4A801FC3
SELECT CAST(@var AS VARCHAR(MAX))
Run Code Online (Sandbox Code Playgroud)

如果您尝试从表列中进行选择,那么您可以这样做:

SELECT CAST(myBinaryCol AS VARCHAR(MAX))
FROM myTable
Run Code Online (Sandbox Code Playgroud)