我有一个表,其中包含一个 varchar(1024) 字段,其中包含具有十六进制编码字符串的字符串。该表是自动填充的,我必须提供一个 SP 以允许用户下载它,因此,我需要将十六进制更改回人类可读的形式。
如果我手动运行此语句(从字段中获取十六进制数据),它工作得很好:
SELECT X'5468697320697320612074657374206D6573736167652031323334353637383930';
但是我找不到在调用字段/列名时让它工作的工作示例。我找到了一些示例,但这些示例只返回 null 或 0。
我试过 X 和 UnHex() 都没有给我结果。
我哪里错了?
谢谢
编辑:
好的,在进行了更多测试之后,看来它首先必须是写入数据库的方式。
这是一个调用创建数据库条目的 SP 的经典 ASP 页面。在这种方法中,对数据库的写入工作,我可以在字段中看到 HEX 内容。复制该字段的内容,并将其放入 Select X'123123' 中,即可得到我想要的 ASCII 值。
如果我将其作为 Select 进行尝试,则会失败,返回零或 Null。
SELECT Message_Body_Hex, UNHEX(Message_Body_Hex) FROM messages_inbound
返回:
Message_Body_Hex......unhex(Message_Body_Hex)
417265612032........(空)
还是一头雾水!:)