2012年4月11日 星期三

Transact-SQL CONVERT:二進制數字與字元的轉換 (Binary Number & Characters Conversion)



資料庫處理的資料,多半是以字元(characters)、十進制數字為主,因此它便提供了較多這方面的函數供開發者使用。但若想設計較底層的功能時 (如:整合通訊軟體資料),便有機會遇到二進制數字,此時可利用 SQL Server 2008 CONVERT 函數的二進制 Style 來處理轉換問題。


語法:CONVERT(Data Type, Expression String, Style)

1) Binary 與 ASCII 字元的轉換:Style 設為 0,所得 ASCII 字元以 16 進制表示。
declare @expression_string varchar(100),
        @binary_codes      varbinary(200)

set     @expression_string = '1011'
set     @binary_codes = convert(varbinary(200), @expression_string, 0)  -- ASCII (hex)

select  @binary_codes as Binary_Codes
select  convert(varchar(100), @binary_codes, 0) as Expression_String
所得結果


2) Binary 與一般字元的轉換:當 Style = 1 時,Expression String 的前兩個字元需為 0x;Style = 2 便無此限制。
Style = 1
declare @expression_string varchar(100),
        @binary_codes      varbinary(200)

set     @expression_string = '0x1011'
set     @binary_codes = convert(varbinary(200), @expression_string, 1)

select  @binary_codes as Binary_Codes
select  convert(varchar(100), @binary_codes, 1) as Expression_String
所得結果

Style = 2

declare @expression_string varchar(100),
        @binary_codes      varbinary(200)

set     @expression_string = '1011'
set     @binary_codes = convert(varbinary(200), @expression_string, 2)

select  @binary_codes as Binary_Codes
select  convert(varchar(100), @binary_codes, 2) as Expression_String
所得結果