VARBINARY到SQL Server
“转换一个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
不同的要求。
这个答案是不正确的。我使用用户SID在桌面上测试了它 - 独特铸造值的数量少于不同二进制SID的数量。您应该使用CONVERT(VARCHAR(...),binaryValue,2),以获得独特的价值 - 从Gunjan Juyal的答案是正确的 - 它应该被标记为解决 – 2013-10-18 20:03:06
@PhilippMunin - 这两个答案,做不同的事情。这一个接受一个表达式的结果,如'SELECT CAST(“这是一个测试” AS VARBINARY(100))'是'0x5468697320697320612074657374'在我的默认排序,并将其转换回'varchar'字符串。 Gunjan的答案以字符串的形式返回了十六进制表示('5468697320697320612074657374')。大概这种解释对于OP的需求是正确的,因为他们接受它。 – 2013-10-18 20:28:55
这个答案是正确的!我测试了它,它符合我和OP的要求。 – 2015-10-07 14:50:39
其实最好的答案是
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
使用 “2
” 切断 “0x
” 的varbinary
的开始。
这个工作对我来说 – Jozcar 2017-08-09 14:45:36
我想VARCHAR,因为值从字符串值isterted。我是说要读什么写的.. – theklc 2010-07-20 12:43:59