HSQL 和按位运算?
Posted
技术标签:
【中文标题】HSQL 和按位运算?【英文标题】:HSQL and Bitwise operations? 【发布时间】:2014-04-30 21:51:29 【问题描述】:我正在编写一个必须集成到现有旧架构中的系统应用程序。为此,我必须访问表中的位掩码字段;像这样:
SELECT * FROM directory WHERE (status & 64) | (status & 256);
我们现有的系统在 mysql 上运行——我们有一个与上面类似的语句,它工作得很好。
但是,在我必须与现有系统集成的新应用程序中,我在单元测试中使用嵌入式 HSQL。对于我的一生,我无法弄清楚如何在 HSQL 中进行按位运算。此外,即使我能够弄清楚,我也开始担心两个 SQL 引擎之间没有一条语句兼容。
关于如何解决这个问题的任何提示?目前我在想我只需要选择 status != 0 的所有内容(当然,限制结果集),然后使用 java 挑选出我想要与我的状态匹配的特定内容瞄准。哎呀。
【问题讨论】:
【参考方案1】:这些操作是使用 HSQLDB 中的函数完成的。
http://hsqldb.org/doc/2.0/guide/builtinfunctions-chapt.html#bfc_numeric_functions
请参阅 BITOR、BITXOR、BITAND、BITNOT、BITANDNOT 函数。
按位运算符在 SQL 方言中并不常见。 MySQL 是一个例外而不是常态。
【讨论】:
是的,这正是我在解决这个问题时学到的。令人惊讶的是,每个人都将这些作为函数而不是标准运算符来实现,但事实就是如此。谢谢! :)【参考方案2】:我从来没有找到比仅仅努力将我的嵌入式数据库从 HSQL 替换为 MYSQL 更好的解决方案。
我还花时间编写更好的单元测试;即:针对实际数据库运行我的数据库逻辑,但所有其他层都使用模拟数据库逻辑。
这就是我的收获...针对您在生产中使用的同一数据库运行您的 DDL 测试,并针对 DDL 模拟运行您的所有其他逻辑。
为了后代,这是我用来构建嵌入式 MYSQL 的内容: http://zhentao-li.blogspot.com/2013/06/using-embedded-mysql-database-for-unit.html?m=1
【讨论】:
以上是关于HSQL 和按位运算?的主要内容,如果未能解决你的问题,请参考以下文章