【问题标题】:How to append 0s at the end of varbinary value in SQL如何在 SQL 中的 varbinary 值末尾附加 0
【发布时间】:2017-10-05 10:43:12
【问题描述】:

我有一个名为 abc 的列,它是 Varbinary。 我想在固定长度的 varbinary 值的末尾插入 0。

例如

这是原始值:0x0A5445535420

我想要这样的东西: 0x0A5445535420200000000000000000000000000000000000000000

我试过了

CONVERT(VARBINARY(64), 'abc')  

但它没有在末尾附加 0。

【问题讨论】:

  • 你在用什么rdbms
  • Sql server 2012
  • 显然,您只需将其转换为 BINARY 而不是 VARBINARY,因为 varbinary 会自动切断零。如果您想要固定长度的值,请问为什么要使用 varbinary ?
  • 谢谢 Rafalon,我不知道 BINARY 和 VARBINARY 之间的区别。如果我使用 (CONVERT(BINARY(64), 'abc') 它不会切断零。再次感谢您。
  • 好吧,VAR 代表“变量”(可变长度),就像在 VARCHAR 中一样。这意味着只有有效数字/字符/任何内容都保存在内存中。这些类型用于优化内存。因此,您声明的长度 (64) 是 最大 长度

标签: sql varbinary


【解决方案1】:

怎么样:

SELECT CONVERT(VARBINARY(64), (CONVERT(BINARY(64), 'abc')))

【讨论】:

  • SELECT CONVERT(VARBINARY(64), (CONVERT(BINARY(64), 'abc'))) 给了我和 SELECT CONVERT(BINARY(64), 'abc') 一样的东西 (0x61626300000...000)
  • @Rafalon 以数据类型为模,是的,但与发布的 CONVERT(VARBINARY(64), 'abc') 不同。我不知道确切的数据类型(VARBINARY 与 BINARY)是否对 OP 很重要,因此我提出了他的要求。
  • @Joe 是的,所以你回答了这个问题 :) 但我认为你可以通过添加关于类型的注释来改进你的答案,因为它可能对那些问自己这类问题的人有用跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
  • 2021-01-27
  • 2014-11-07
  • 2014-05-01
相关资源
最近更新 更多