我有一个包含数据类型bit
的列的表。
> CREATE MEMORY TABLE Dummy (name varchar(10), flag bit)
> INSERT INTO Dummy VALUES ('foo', 1)
> INSERT INTO Dummy VALUES ('bar', 0)
> INSERT INTO Dummy VALUES ('foo2', true)
> INSERT INTO Dummy VALUES ('bar2', false)
> select name from Dummy where flag=1
foo2
> select name from Dummy where flag=true
foo2
为什么我没有foo
? 0
和1
位如何转换为布尔值?似乎两者都是假的,我无法区分它们。
(顺便说一句,这个表基于我在Sybase中的一个。位1和0正确地转换为true和false。)
答案 0 :(得分:1)
这可以像您期望的那样使用HSQLDB 2.2.5,返回两行。
HSQLDB 2.x直接支持BIT类型并存储位值。可以存储值B'0'和B'1'。它将TRUE和FALSE分别转换为1和0。整数值0和1也被转换为位。
HSQLDB 1.8在定义列后立即将BIT转换为BOOLEAN。从整数转换可能并不总是有效。