sql-server – 如何将nvarchar解码为文本(SQL Server 2008 R2)?

我有一个带有nvarchar(4000)字段的sql Server 2008 R2表.

存储此表的数据看起来像

‘696D616765206D61726B65643A5472’

要么

‘303131’(“011”).

我看到每个char都编码为十六进制.

如何从表中读取这些数据?我不想写写解码功能,我的意思是存在更简单的方法.

附:对不起我的英语不好.

解决方法

sql Server 2008实际上具有内置的十六进制编码和解码功能

示例(将字符串转换为VarBinary时,请注意第三个参数值为“1”):

DECLARE @ProblemString VarChar(4000) = '54657374'
SELECT Convert(VarChar,Convert(VarBinary,'0x' + @ProblemString,1))

参考:http://blogs.msdn.com/b/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx

这种方法的优点是你不需要你通常试图避免的“Exec”调用,因为害怕注入其他东西.缺点是它只适用于sql Server 2008及更高版本.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...