参考下面的示例代码:
--转换二进制值 0x4E616d65 到一个字符值
SELECT CONVERT(char(8), 0x4E616d65, 0) AS 'Style 0, 二进制到字符' |
--下面的示例演示了 Style 为 1 的情况下,如何强行截断结果值。
--产生的结果值由于包含字符 0x ,所以被截断
SELECT CONVERT(char(8), 0x4E616d65, 1) AS 'Style 1, 二进制到字符' |
--下面的示例演示了 Style 为 2 的情况下,没有截断结果值。
--这是因为 0x 字符未包含在结果中
对于 style 1,将在转换后的结果左侧添加字符 0x。作为要转换的二进制表达式,字符 0x 必须为表达式中的前两个字符。
在style为2的情况下,生成的二进制值不会包含字符 0x。作为要转换的二进制表达式,也不需要在字符前面包含字符 0x。
如果 data_type 为二进制类型,则表达式必须为字符表达式。
如果转换后的表达式长度大于 data_type 长度,则会在右侧截断结果。
如果固定长度 data_types 大于转换后的结果,则会在结果右侧添加零。
如果 data_type 为字符类型,则表达式必须为二进制表达式。每个二进制字符均转换为两个十六进制字符。如果转换后的表达式长度大于 data_type 长度,则会在右侧截断结果。
如果 data_type 为固定大小的字符类型,并且转换后的结果长度小于其 data_type 长度,则会在转换后的表达式右侧添加空格,以使十六进制数字的个数保持为偶数。
--转换字符值 Name 到一个二进制值
SELECT CONVERT(binary(8), 'Name', 0) AS 'Style 0, 字符到二进制' SELECT CONVERT(binary(4), '0x4E616D65', 1) AS 'Style 1, 字符到二进制' SELECT CONVERT(binary(4), '4E616D65', 2) AS 'Style 2, 字符到二进制' |
结果如下: