xie*_*gai 7 sql-server encoding nvarchar decoding sql-server-2008
我有一个SQL Server 2008 R2表与nvarchar(4000)字段.
存储此表的数据看起来像
'696D616765206D61726B65643A5472'
要么
'303131' ("011").
我看到每个char都编码为十六进制.
如何从表中读取这些数据?我不想写解码功能,我的意思是存在更简单的方法.
PS抱歉我的英文.
SQL Server 2008实际上具有内置的十六进制编码和解码功能!
示例(将字符串转换为 VarBinary 时,请注意值为“1”的第三个参数):
DECLARE @ProblemString VarChar(4000) = '54657374'
SELECT Convert(VarChar, Convert(VarBinary, '0x' + @ProblemString, 1))
Run Code Online (Sandbox Code Playgroud)
这种方法的优点是您不需要“Exec”调用,您通常会尽量避免调用“Exec”调用,因为担心注入等问题。缺点是它仅适用于 SQL Server 2008 及更高版本。