SUBSTRING()和十六进制值

时间:2013-08-07 08:49:03

标签: sql-server-2008 tsql

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

见:

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

...输出...

0x06
0xF6
0x0F
0xFF

...目前看来对我来说完全是胡说八道。但它可以某种方式用于检测哪个列在触发器中更新(see COLUMNS_UPDATED())。

我试过了:

  • 将其中间转换为字符串,然后将其子串。
  • 将其中间转换为int,然后将字符串转换为子字符串
  • 在MSDN子字符串()文档中搜索
  • 使用Google

有人可以解释转换是如何完成的?

1 个答案:

答案 0 :(得分:1)

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

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

SUBSTRING(input, 1, 1)的输出:

0x06
0xF6
0x0F
0xFF