【问题标题】:SQL Server convert from varbinary to varcharSQL Server 从 varbinary 转换为 varchar
【发布时间】:2018-01-28 17:14:49
【问题描述】:

我一直在用头撞墙。我正在尝试从 SQL Server 数据库中具有varbinary(28) 类型的字段中获取数据。

我只是不知道如何将数据从十六进制转换回字符。

我知道一个列 = '1081X' 并且存储在数据库中的十六进制是0x7E959C9ABB818C

我试过了:

SELECT
    0x7E959C9ABB818C, '1081X',
    CONVERT(VARBINARY(28), '1081X'),
    CONVERT(VARBINARY(28), N'1081X')

-- 0x7E959C9ABB818C 1081X   0x3130383158    0x31003000380031005800

关于如何从代码 0x7E959C9ABB818C 中检索“1081X”的任何想法?

【问题讨论】:

  • 只是为了确保我给你正确的解决方案,二进制字段中的值是 ASCII 文本?
  • @virusstorm 我想是的。我已经尝试过 UTF 和 ASCII 但无法解决。
  • 重新开始。您究竟如何知道此列包含您提供的文本值?
  • 是的,我正在尝试与供应商数据库集成。该行包含有关药物的信息,包括其文本名称。对于该药物,我可以查找该药物的 PBS 代码,即 1081X

标签: sql-server


【解决方案1】:

我得到不同的结果。

您确定值0x7E959C9ABB818C 应该转换为:'1081X'

--what OP appears to be asking:
select cast(0x7E959C9ABB818C as varchar(max))  --result: ~•œš»Œ

--what does cast of OP question provide?
select cast('1081X' as varbinary(max))   --result: 0x3130383158

--test cast back
select cast(0x3130383158 as varchar(max))  --result: 1081X

【讨论】:

  • 是的,我正在尝试与供应商数据库集成。该行包含有关药物的信息,包括其文本名称。对于该药物,我可以查找该药物的 PBS 代码,即 1081X
  • @pgee70 我得到了和布赖恩一样的结果。我不认为您正在使用的二进制值是您认为的那样。
  • @pgee70 你好,我又回来了。好奇你有没有弄清楚问题/解决方案是什么?如果是这样,也许将其作为答案发布并接受您自己的答案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
相关资源
最近更新 更多