我有一个表,其中有一列数据类型为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
位如何转换为 boolean 值?看来两者都是假的,我无法区分它们。
(顺便说一下,这个表是基于我在 Sybase 中的表。位 1 和 0 正确地转换为 true 和 false。)
最佳答案
这与您期望的 HSQLDB 2.2.5 一样,返回两行。
HSQLDB 2.x直接支持BIT类型并存储位值。可以存储值B'0'和B'1'。它将 TRUE 和 FALSE 分别转换为 1 和 0。整数值 0 和 1 也被转换为位。
一旦定义了列,HSQLDB 1.8 就会将 BIT 转换为 BOOLEAN。从整数转换可能并不总是有效。
关于java - 从具有 BIT 列的 HSQLDB 表中进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581985/