none
請問 convert 函數的結果 RRS feed

解答

  • 您好,

    您的範例上,是將字串中的字元一個一個轉成ascii的16進位數值,因為你設定是5個,所以只會轉前5個字元,

    MSDN:將 ASCII 字元轉譯成二進位位元組或將二位進位元組轉譯成 ASCII 字元。 每個字元或位元組都會以 1:1 的方式轉換。

    說明如下,

    0的ascii值為48,所以16進位為 0x30,

    x的ascii值為120,所以16進位為0x78,

    4的ascii值為52,所以16進位為0x34

    9的ascii值為57,所以16進位為0x39

    7的ascii值為55,所以16進位為0x37

    所以這5個字元的16進位串起來就是0x3078343937


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/



    • 已編輯 亂馬客 2012年7月25日 上午 02:13
    • 已提議為解答 TerryChuangModerator 2012年7月25日 上午 02:14
    • 已標示為解答 MIS110 2012年7月25日 上午 03:32
    2012年7月25日 上午 02:10

所有回覆

  • hi

    select convert(VARBINARY(5),'0x49747A696B',0)

    只是很單存的 char to binary

    因為lenght=5所以應該是這樣

    select convert(VARBINARY(5),'0x497',0) as 'char to binary'
    select convert(varchar(5),0x3078343937,0) as 'binary to char' .

    另一各例子

    select convert(VARBINARY(7),'sql2012',0) as 'char to binary'
    SELECT CONVERT(varchar(7),0x73716C32303132, 0) AS 'binary to char'


    保證解答-微軟技術支援服務


    2012年7月25日 上午 01:45
    版主
  • 您好,

    您的範例上,是將字串中的字元一個一個轉成ascii的16進位數值,因為你設定是5個,所以只會轉前5個字元,

    MSDN:將 ASCII 字元轉譯成二進位位元組或將二位進位元組轉譯成 ASCII 字元。 每個字元或位元組都會以 1:1 的方式轉換。

    說明如下,

    0的ascii值為48,所以16進位為 0x30,

    x的ascii值為120,所以16進位為0x78,

    4的ascii值為52,所以16進位為0x34

    9的ascii值為57,所以16進位為0x39

    7的ascii值為55,所以16進位為0x37

    所以這5個字元的16進位串起來就是0x3078343937


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/



    • 已編輯 亂馬客 2012年7月25日 上午 02:13
    • 已提議為解答 TerryChuangModerator 2012年7月25日 上午 02:14
    • 已標示為解答 MIS110 2012年7月25日 上午 03:32
    2012年7月25日 上午 02:10
  • hi

    select convert(VARBINARY(5),'0x49747A696B',0)

    只是很單存的 char to binary

    因為lenght=5所以應該是這樣

    select convert(VARBINARY(5),'0x497',0) as 'char to binary'
    select convert(varchar(5),0x3078343937,0) as 'binary to char' .

    另一各例子

    select convert(VARBINARY(7),'sql2012',0) as 'char to binary'
    SELECT CONVERT(varchar(7),0x73716C32303132, 0) AS 'binary to char'


    保證解答-微軟技術支援服務


    感謝您的回覆 , 因為我程度不是很好 , 我還需要再想想 , 謝謝

    • 已編輯 MIS110 2012年7月25日 上午 03:36 修改錯字
    2012年7月25日 上午 03:33
  • 您好,

    您的範例上,是將字串中的字元一個一個轉成ascii的16進位數值,因為你設定是5個,所以只會轉前5個字元,

    MSDN:將 ASCII 字元轉譯成二進位位元組或將二位進位元組轉譯成 ASCII 字元。 每個字元或位元組都會以 1:1 的方式轉換。

    說明如下,

    0的ascii值為48,所以16進位為 0x30,

    x的ascii值為120,所以16進位為0x78,

    4的ascii值為52,所以16進位為0x34

    9的ascii值為57,所以16進位為0x39

    7的ascii值為55,所以16進位為0x37

    所以這5個字元的16進位串起來就是0x3078343937


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/




    太謝謝了 , 這就是我不懂的地方 , 謝謝您這麼詳細的說明
    2012年7月25日 上午 03:34