2

子字符串如何处理十六进制值?

看到这个:

PRINT SUBSTRING(0x6,1,1)
PRINT SUBSTRING(0xF6,1,1)
PRINT SUBSTRING(0xFF6,1,1)
PRINT SUBSTRING(0xFFF6,1,1)

...输出...

0x06
0xF6
0x0F
0xFF

...目前在我看来完全是一派胡言。但它可以以某种方式用于检测触发器中更新了哪一列(参见 COLUMNS_UPDATED())。

我试过了:

  • 中间将其转换为字符串,然后将其子串化
  • 中间将其转换为 int,然后是字符串,然后是子字符串
  • 在 MSDN substring() 文档中搜索
  • 谷歌搜索

有人可以解释一下这种转换是如何完成的吗?

4

1 回答 1

2

SUBSTRING文档并不清楚它如何处理二进制值,指的是“字符”而不是字节。但它有效地将输入视为字节序列,并且1, 1您要求输入序列的第一个字节:

Input    Byte sequence
----------------------
0x6      06
0xF6     F6
0xFF6    0F F6
0xFFF6   FF F6

输出SUBSTRING(input, 1, 1)

0x06
0xF6
0x0F
0xFF
于 2013-08-07T09:23:00.727 回答