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

问题描述 投票:1回答:1

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

我的问题 - 没有办法测试查询而不将十六进制转换为代码而不是直接在查询中使用'hex'函数?

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

mysql derby hsqldb in-memory-database h2db
1个回答
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版已添加对这两个函数的支持。

© www.soinside.com 2019 - 2024. All rights reserved.