Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 数据类型 » 数据类型转换

 

转换位数组

将整数转换成位数组

将整数转换成位数组时,位数组的长度是整数类型中的位数,而位数组的值是该整数的二进制表示。该整数的最高有效位成为数组的第一位。

示例

SELECT CAST( CAST( 1 AS BIT ) AS VARBIT ) 返回包含 1 的 VARBIT(1)。

SELECT CAST( CAST( 8 AS TINYINT ) AS VARBIT ) 返回包含 00001000 的 VARBIT(8)。

SELECT CAST( CAST( 194 AS INTEGER ) AS VARBIT ) 返回包含 00000000000000000000000011000010 的 VARBIT(32)。

将二进制转换成位数组

将长度为 n 的二进制类型转换成位数组时,该数组的长度为 n * 8 位。位数组的第一个 8 位成为该二进制值的第一个字节。该二进制值的最高有效位成为该数组的第一位。位数组的下一个 8 位成为该二进制值的第二个字节,以此类推。

示例

SELECT CAST( 0x8181 AS VARBIT ) 返回包含 1000000110000001 的 VARBIT(16)。

将字符转换成位数组

将长度为 n 的字符数据类型转换成位数组时,该数组的长度为 n 位。每个字符都必须是 '0' 或 '1',并且数组的相应位被指派值 0 或 1。

示例

SELECT CAST( '001100' AS VARBIT ) 返回包含 001100 的 VARBIT(6)。

将位数组转换成整数

将位数组转换为整数数据类型时,将根据该整数类型的存储格式首先使用最高有效位解释位数组的二进制值。

示例

SELECT CAST( CAST( '11000010' AS VARBIT ) AS INTEGER ) 返回 194 (110000102 = 0xC2 = 194)。

将位数组转换成二进制值

将位数组转换成二进制时,数组的第一个 8 位成为该二进制值的第一个字节。数组的第一位成为该二进制值的最高有效位。下一个 8 位用作第二个字节,以此类推。如果位数组的长度不是 8 的倍数,则用附加零填充该二进制值最后一个字节的最低有效位。

示例

SELECT CAST( CAST( '1111' AS VARBIT ) AS BINARY ) 返回 0xF0(11112 变为 111100002 = 0xF0)。

SELECT CAST( CAST( '0011000000110001' AS VARBIT ) AS BINARY ) 返回 0x3031 (00110000001100012 = 0x3031)。

将位数组转换成字符

将长度为 n 位的位数组转换成字符数据类型时,结果的长度将是 n 个字符。结果中的每个字符都必须为 '0' 或 '1',对应于数组中的位。

示例

SELECT CAST( CAST( '01110' AS VARBIT ) AS VARCHAR ) 返回字符串 '01110'。