2014-04-30 3 views
1

기존의 구형 아키텍처에 통합해야하는 시스템 응용 프로그램을 작성 중입니다. 이렇게하려면 테이블의 비트 마스크 필드에 액세스해야합니다. 뭔가가 이렇게 :HSQL 및 비트 연산?

SELECT * FROM directory WHERE (status & 64) | (status & 256); 

우리의 기존 시스템은 MySQL에서 실행 - 그리고 우리는 위와 비슷한 진술이 잘 작동합니다.

그러나 기존 시스템과 통합해야하는 새 응용 프로그램에서는 단위 테스트에 임베디드 -HSQL을 사용하고 있습니다. 그리고 내 인생에서 HSQL에서 비트 연산을 수행하는 방법을 알 수 없습니다. 또한, 비록 그것을 이해할 수있을지라도, 나는 두 SQL 엔진 사이에서 하나의 문장이 호환되지 않는다는 것을 걱정하기 시작했습니다.

이것에 대해 이동하는 방법에 대한 모든 팁? 순간에 나는 단지 모든 것을 선택해야한다고 생각하고있다! = 0 (물론 결과 셋을 제한한다). 그런 다음 java를 사용하여 특정 상황을 선택한다. 타겟팅 Yikes.

답변

0

내 임베디드 데이터베이스를 HSQL에서 MYSQL으로 바꾸는 것보다 더 나은 솔루션을 찾지 못했습니다.

나는 또한 더 나은 단위 테스트를 작성하는 시간이 걸렸습니다; 즉 : 실제 데이터베이스에 대해 데이터베이스 로직을 실행하지만 다른 모든 레이어는 모의 데이터베이스 로직을 사용합니다.

그래서 제 작업에서 벗어났습니다. 프로덕션 환경에서 사용중인 동일한 데이터베이스에 대해 DDL 테스트를 실행하고 다른 모든 논리를 DDL 모의 객체에 대해 실행하십시오. http://zhentao-li.blogspot.com/2013/06/using-embedded-mysql-database-for-unit.html?m=1

3

이러한 작업이 HSQLDB에서 함수를 사용하여 수행됩니다

후세를 들어, 여기에 내가 내 포함 된 MYSQL을 구축하는 데 사용거야.

http://hsqldb.org/doc/2.0/guide/builtinfunctions-chapt.html#bfc_numeric_functions

참조 BITOR, BITXOR, BITAND, BITNOT, BITANDNOT 기능을 제공합니다.

비트 연산자는 SQL 언어에서 매우 일반적되지 않습니다. MySQL은 표준이 아닌 예외입니다.

+0

예이 문제를 해결하기 위해 배운 내용입니다. 놀랍게도 모든 사람들이 표준 운영자 대신 이러한 기능을 구현하고 있지만 실제로는 그렇습니다. 감사! :) – Bane