Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL函数';十六进制';在H2/Derby/HSQL中_Mysql_Derby_Hsqldb_In Memory Database_H2db - Fatal编程技术网

MySQL函数';十六进制';在H2/Derby/HSQL中

MySQL函数';十六进制';在H2/Derby/HSQL中,mysql,derby,hsqldb,in-memory-database,h2db,Mysql,Derby,Hsqldb,In Memory Database,H2db,我正在尝试使用内存中的数据库对sql查询进行单元测试。查询使用MySQL内置函数“hex”和“unhex”(因为它们将二进制数据写入数据库)。事实证明,这3个momery DB解决方案都不支持“hex”函数,我无法测试它们 我的问题-如果不将十六进制转换为代码,而不是直接在查询中使用“十六进制”函数,是否就无法测试查询 另外,我知道内存中的数据库并不代表真正的数据库行为,但查询非常简单——插入和选择。HSQLDB允许您定义自己的函数。如果没有测试实际的十六进制或字符串返回值,可以创建模拟函数he

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

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


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

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

CREATE FUNCTION UNHEX(S VARCHAR(1000)) RETURNS VARCHAR(1000) 
 BEGIN ATOMIC
   RETURN S;
 END;
如果希望函数返回实际转换的值,可以扩展函数以执行转换。在这种情况下,您可以使用内置函数提取ASCII代码,以及任何现有的静态Java方法:


更新:版本2.4.1的HSQLDB中添加了对这两个函数的支持。

如何定义您自己的函数:@BryanPendleton我根据您的建议尝试使用Derby,但它不支持
limit
关键字。HSQLDB离我想要做的事情“更近”。谢谢谢谢我花了一些时间将模式翻译成HSQLDB,并从java创建SQL函数,但它成功了!