2013-08-07 107 views
1

子串如何处理十六进制值?SUBSTRING()和十六进制值

看到这个:

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子串搜索()文档
  • 谷歌搜索

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

+1

完全是胡说八道?当然,这只是最左边的完整字节? – AakashM

+0

@AakashM :: D,是的,我似乎真的错过了! 0xFF6 => 0x ** 0 ** FF6 – OzrenTkalcecKrznaric

回答

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