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

xie*_*gai 7 sql-server encoding nvarchar decoding sql-server-2008

我有一个SQL Server 2008 R2表与nvarchar(4000)字段.

存储此表的数据看起来像

'696D616765206D61726B65643A5472'

要么

'303131' ("011").

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

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

PS抱歉我的英文.

Tao*_*Tao 4

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

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

DECLARE @ProblemString VarChar(4000) = '54657374'
SELECT Convert(VarChar, Convert(VarBinary, '0x' + @ProblemString, 1))
Run Code Online (Sandbox Code Playgroud)

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

这种方法的优点是您不需要“Exec”调用,您通常会尽量避免调用“Exec”调用,因为担心注入等问题。缺点是它仅适用于 SQL Server 2008 及更高版本。