我在 SQL Server 数据库中有一些 base-64 编码的字符串,例如:
DECLARE @x VARBINARY(64);
SET @x = 0x4b78374c6a3733514f723444444d35793665362f6c513d3d
当它被转换或转换为 VARCHAR 时,我得到:
+˽Ð:¾Îréî¿•
我正在寻找 SQL Server 返回一个 varchar,并将 varbinary 的十六进制表示形式作为 varchar,例如:
4b78374c6a3733514f723444444d35793665362f6c513d3d
CAST/CONVERT/function 中是否有一个构建可以执行此操作,或者是否必须将其添加为用户定义函数? UDF 是什么?
如果我可以在转换过程中选择是要大写 A-F 还是小写 a-f,那就加分了。
对于 SQL2005 我会使用xsd:hexBinary
数据类型 http://www.schemacentral.com/sc/xsd/t-xsd_hexBinary.html:
DECLARE @x VARBINARY(64);
SET @x = 0x4b78374c6a3733514f723444444d35793665362f6c513d3d
SELECT '0x'+CONVERT(XML, '').value('xs:hexBinary(sql:variable("@x") )', 'VARCHAR(MAX)');
SELECT '0x'+LOWER(CONVERT(XML, '').value('xs:hexBinary(sql:variable("@x") )', 'VARCHAR(MAX)'));
对于 SQL2008+ 我会使用 CONVERT (参见二进制样式部分 http://msdn.microsoft.com/en-us/library/ms187928%28v=sql.100%29.aspx):
SELECT CONVERT(VARCHAR(MAX), @x, 1)
参考:http://blogs.msdn.com/b/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx http://blogs.msdn.com/b/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)