【问题标题】:Convert decimal to hex string without 0x in SQL Server在 SQL Server 中将十进制转换为不带 0x 的十六进制字符串
【发布时间】:2019-11-13 01:04:39
【问题描述】:

我要转换

string
------
BB
C1
GB

hex
---
4242
4331
4742

使用

SELECT CONVERT(BINARY(2), 'B1')

结果是'0x4231'

但我想从结果中删除0x,所以我尝试将varbinary 转换为字符串:

SELECT CONVERT([VARCHAR](MAX), CONVERT(BINARY(2), 'B1', 2))

结果是'?'

然后我尝试了

SELECT SUBSTRING(CONVERT(BINARY(2), 'B1'), 2, 4)

结果是'0x42'

如何将“B1”转换为“4231”?

【问题讨论】:

  • 不要将存储在变量/列中的实际二进制值与用于以您可以看到的方式显示它的表示混淆。 “0x”位(在您的第一个查询中)是 SSMS 显示该特定数据类型的方式的产物。
  • 使用 tsql 很少需要这样做。所以这就引出了你想要完成什么的问题。

标签: sql-server varbinary


【解决方案1】:

使用系统函数master.dbo.fn_varbintohexstr转换为十六进制,然后去掉前两个字符。

SELECT SUBSTRING(master.dbo.fn_varbintohexstr(convert(binary(2), 'B1')),3,999)

输出:

4231

【讨论】:

    【解决方案2】:

    自己解决了

    SELECT convert(varchar(4), convert(binary(2), ('B1')), 2)
    

    【讨论】:

      猜你喜欢
      • 2016-03-15
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 2018-01-31
      • 2012-02-03
      • 2019-07-27
      • 2016-03-06
      • 1970-01-01
      相关资源
      最近更新 更多