gpt4 book ai didi

sql-server - 如何在 SQL 中将二进制值打印为十六进制?

转载 作者:行者123 更新时间:2023-12-01 18:55:13 26 4
gpt4 key购买 nike

我正在使用 SQL Server 2000 通过 PRINT 从表中打印出一些值。对于大多数非字符串数据,我可以转换为 nvarchar 以便能够打印它,但二进制值尝试使用字符的位表示形式进行转换。例如:

DECLARE @binvalue binary(4)
SET @binvalue = 0x12345678
PRINT CAST(@binvalue AS nvarchar)

预期:

0x12345678

相反,它打印两个乱码字符。

如何打印二进制数据的值?有内置的还是我需要自己构建?

更新:这不是该行的唯一值,因此我不能只打印 @binvalue。它更像是 PRINT N'other stuff' + ???? + N'更多的东西'。不确定这是否有什么不同:我没有尝试单独打印@binvalue。

最佳答案

Do not use master.sys.fn_varbintohexstr - it is terribly slow, undocumented, unsupported, and might go away in a future version of SQL Server.

如果需要将binary(16)转换为十六进制字符,请使用convert:

convert(char(34), @binvalue, 1)
为什么是 34?因为 16*2 + 2 = 34,即“0x”- 2 个符号,加上每个字符 2 个符号。

我们尝试对包含 200000 行的表进行 2 次查询:

  1. select master.sys.fn_varbintohexstr(field)
    from table`
  2. select convert(char(34), field, 1)
    from table`

第一个运行 2 分钟,第二个运行 4 秒。

关于sql-server - 如何在 SQL 中将二进制值打印为十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com