SQL Server 2008的Transact-SQL语言增强
2010-06-16 15:44:49 来源:WEB开发网3.CONVERT 函数
CONVERT 函数现在允许在二进制和字符十六进制值之间进行转换。函数语法格式如下:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
expression 是被转换的有效的表达式,data_type 目标数据类型(不能使用别名数据类型),length 指定目标数据类型长度的可选整数,style 指定 CONVERT 函数如何转换 expression 的整数表达式。
如果 expression 为 binary(n)、varbinary(n)、char(n) 或 varchar(n),则 style 可以为下表中显示的值之一。
值 | 输出 |
0(默认值) | 将 ASCII 字符转换为二进制字节,或者将二进制字节转换为 ASCII 字符。每个字符或字节按照 1:1 进行转换。
如果 data_type 为二进制类型,则会在结果左侧添加字符 0x。 |
1, 2 | 对于 style 1,将在转换后的结果左侧添加字符 0x。作为要转换的二进制表达式,字符 0x 必须为表达式中的前两个字符。
在style为2的情况下,生成的二进制值不会包含字符 0x。作为要转换的二进制表达式,也不需要在字符前面包含字符 0x。 如果 data_type 为二进制类型,则表达式必须为字符表达式。 如果转换后的表达式长度大于 data_type 长度,则会在右侧截断结果。 如果固定长度 data_types 大于转换后的结果,则会在结果右侧添加零。 如果 data_type 为字符类型,则表达式必须为二进制表达式。每个二进制字符均转换为两个十六进制字符。如果转换后的表达式长度大于 data_type 长度,则会在右侧截断结果。 如果 data_type 为固定大小的字符类型,并且转换后的结果长度小于其 data_type 长度,则会在转换后的表达式右侧添加空格,以使十六进制数字的个数保持为偶数。 |
参考下面的示例代码:
--转换二进制值 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 字符未包含在结果中
SELECT CONVERT(char(8), 0x4E616d65, 2) AS 'Style 2, 二进制到字符'
--转换字符值 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, 字符到二进制'
结果如下:
更多精彩
赞助商链接