2020年4月2日 星期四

for ms-sql , 16進制字串轉int, 中文字to byte array,to int.....轉換

先講x0ab1234這類的資料轉int怎麼做吧

----------------
declare @R01 int ;
...
...
set @R01=convert(int, convert(varbinary,'0xE000',1));
--------------------------
其中,這個convert(varbinary,'要轉換的16進制字串',1)格式問題
請參考文件

https://docs.microsoft.com/zh-tw/sql/t-sql/functions/cast-and-convert-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15

再來說中文字hi-byte low-byte怎麼轉成unicode整數
------------------------
declare @TestString nvarchar(1);
set @TestString='你'
print
sys.fn_varbintohexstr(substring(cast(@TestString as varbinary(2)),2,1))
 +replace(sys.fn_varbintohexstr(substring(cast(@TestString as varbinary(2)),1,1)),'0x','')
--顯示為"0x4f60"
--再套用 上例「convert(int.....)」

set @R01=convert(int,convert(varbinary, sys.fn_varbintohexstr(substring(cast(@TestString as varbinary(2)),2,1))+replace(sys.fn_varbintohexstr(substring(cast(@TestString as varbinary(2)),1,1)),'0x',''),1));

--R01為20320
----------------------------------------
驗證方式
請到「字碼查詢」
https://www.cns11643.gov.tw/search.jsp?ID=7&SN=&lang=tw
輸入4F60看看是不是得到「你」字

以上,大家加油了!!

沒有留言:

張貼留言