MySQL函数'HEX'在H2 / Derby / HSQL中

时间:2018-03-03 09:41:11

标签: mysql derby hsqldb in-memory-database h2db

我正在尝试使用内存数据库对sql查询进行单元测试。查询使用MySQL内置函数'hex'和'unhex'(因为它们将二进制数据写入DB)。事实证明,这3个in-momery数据库解决方案都没有支持'hex'功能,我无法测试它们。

我的问题 - 如果不将十六进制转换为代码而不是将“十六进制”函数直接移动到查询中,是否无法测试查询?

PS。我知道内存中的数据库并不代表真正的数据库行为,但查询非常简单 - 插入和选择。

1 个答案:

答案 0 :(得分:1)

HSQLDB允许您定义自己的功能。如果您没有测试实际的十六进制或字符串返回值,则可以创建模拟函数HEX和UNHEX来返回输入。例如:

CREATE FUNCTION UNHEX(S VARCHAR(1000)) RETURNS VARCHAR(1000) 
 BEGIN ATOMIC
   RETURN S;
 END;

如果希望函数返回实际转换值,可以扩展函数以执行转换。在这种情况下,您可以使用内置函数来提取ASCII代码以及任何现有的静态Java方法:

更新:HSQLDB for 2.4.1版已添加对这两个功能的支持。