Sybase IQ supports BIT to BINARY and BIT to VARBINARY implicit and explicit conversion and is compatible with Adaptive Server Enterprise support of these conversions.
Sybase IQ implicitly converts BIT to BINARY and BIT to VARBINARY data types for comparison operators, arithmetic operations, and INSERT and UPDATE statements.
For BIT to BINARY conversion, bit value ‘b’ is copied to the first byte of the binary string and the rest of the bytes are filled with zeros. For example, BIT value 1 is converted to BINARY(n) string 0x0100...00 having 2n nibbles. BIT value 0 is converted to BINARY string 0x00...00.
For BIT to VARBINARY conversion, BIT value ‘b’ is copied to the first byte of the BINARY string and the remaining bytes are not used; that is, only one byte is used. For example, BIT value 1 is converted to VARBINARY(n) string 0x01 having 2 nibbles.
The result of both implicit and explicit conversions of BIT to BINARY and BIT to VARBINARY data types is the same. The following table contains examples of BIT to BINARY and VARBINARY conversions.
Conversion of BIT value ‘1’ to |
Result |
---|---|
BINARY(3) |
0x010000 |
VARBINARY(3) |
0x01 |
BINARY(8) |
0x0100000000000000 |
VARBINARY(8) |
0x01 |
These examples illustrate both implicit and explicit conversion of BIT to BINARY and BIT to VARBINARY data types.
CREATE TABLE tbin(c1 BINARY(9)) CREATE TABLE tvarbin(c2 VARBINARY(9)) CREATE TABLE tbar(c2 BIT) INSERT tbar VALUES(1) INSERT tbar VALUES(0)
INSERT tbin SELECT c2 FROM tbar c1 --- 0x010000000000000000 (18 nibbles) 0x000000000000000000 (18 nibbles)
INSERT tvarbin SELECT c2 FROM tbar c2 --- 0x01 0x00
INSERT tbin SELECT CONVERT (BINARY(9), c2) FROM tbar c1 --- 0x010000000000000000 (18 nibbles) 0x000000000000000000 (18 nibbles)
INSERT tvarbin SELECT CONVERT(VARBINARY(9), c2) FROM tbar c2 --- 0x01 0x00