2014-01-10 47 views

回答

8

這從varbinary值的第一個字節中提取的3位:

select CONVERT(tinyint,0x7) & SUBSTRING(0x4D79205465737420537472696E67,1,1) 

邏輯在於在AND(&)的左手側,我們有一個字節與3位設置。在右側,我們從varbinary中提取單個字節(SUBSTRING是基於1的而不是基於0的,所以這是第一個字節)。

爲了從第三個字節的最後5位,我們必須:

select CONVERT(tinyint,0xF8) & SUBSTRING(0x4D79205465737420537472696E67,3,1) 
+0

是否有可能在varbinary上做子串?如果是這樣,每個字節算作一個字符? –

+1

@GuillermoGutiérrez - 我鏈接到它的文檔。我不會說每個字節都算作字符。相反,它是根據字節而不是字符顯式定義的:「* start *和* length *的值必須以文本,圖像,二進制文件的ntext,char或varchar數據類型和字節數的字符數指定varbinary數據類型「。 –

+0

非常感謝...... –

相關問題