从具有 BIT 列的 HSQLDB 表中进行选择

Posted

技术标签:

【中文标题】从具有 BIT 列的 HSQLDB 表中进行选择【英文标题】:Selecting from a HSQLDB table with a BIT column 【发布时间】:2011-09-28 10:43:44 【问题描述】:

我有一个表,其中有一列数据类型为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

为什么我没有得到foo01 位如何转换为布尔值?似乎两者都是假的,我无法区分它们。

(顺便说一句,这个表是基于我在 Sybase 中的一个表。位 1 和 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。从整数转换可能并不总是有效。

【讨论】:

感谢您的提示。我现在已经从 1.8 升级到 2.2.4。当我使用 1 或 0 时出现“格式错误的二进制字符串”错误,但如果我使用 '1' 或 '0' 则它可以工作。

以上是关于从具有 BIT 列的 HSQLDB 表中进行选择的主要内容,如果未能解决你的问题,请参考以下文章

从具有两个变量列的表中选择最大值(microsoft SQL)

如何使用 Nhibernate 从连接两个具有所有 id 的表中选择只有一个不同列的多个列是 UNIQUEIDENTIFIER

如何从 SELECT 加速 HSQLDB UPDATE?

具有 hsqldb 脚本文件的唯一约束违规异常(未读取空格字符)

HSQLDB - DELETE 后自动执行 CHECKPOINT

根据表中其他列的值从同一表中的 2 列中选择信息