2011-09-28 4 views
1

데이터 유형이 bit 인 테이블이 있습니다.BIT 컬럼으로 HSQLDB 테이블에서 선택하기

> 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가 표시되지 않습니까? 01 비트는 부울로 어떻게 변환됩니까? 둘 다 거짓이며 둘 사이를 구별 할 수없는 것 같습니다.

이 (내가베이스 방식으로이 테이블 하나를 기반으로되어 있습니다. 비트 1과 0이 제대로 true와 false로 변환됩니다.)

당신이 HSQLDB 2.2.5에 기대하는 것처럼이 작동

답변

1

, 두 행을 반환합니다.

HSQLDB 2.x는 BIT 타입을 직접 지원하고 비트 값을 저장합니다. 값 B'0 '및 B'1'을 저장할 수 있습니다. TRUE와 FALSE를 각각 1과 0으로 변환합니다. 정수 값 0과 1도 비트로 변환됩니다.

HSQLDB 1.8은 열이 정의 되 자마자 BIT를 BOOLEAN으로 변환합니다. 정수에서 변환이 항상 작동하지 않을 수도 있습니다.

+0

팁 주셔서 감사합니다. 나는 1.8에서 2.2.4로 업그레이드했다. 1 또는 0을 사용할 때 "잘못된 형식의 이진 문자열"오류가 발생하지만 '1'또는 '0'을 사용하면 작동합니다. – dogbane