从具有 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
为什么我没有得到foo
? 0
和 1
位如何转换为布尔值?似乎两者都是假的,我无法区分它们。
(顺便说一句,这个表是基于我在 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
具有 hsqldb 脚本文件的唯一约束违规异常(未读取空格字符)