2013-08-07 150 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