为了账号安全,请及时绑定邮箱和手机立即绑定

如何在没有任何基础数据库的情况下运行 SQL 表达式查询

如何在没有任何基础数据库的情况下运行 SQL 表达式查询

慕少森 2022-05-21 20:30:42
我有一种情况,用户以 SQL 格式输入一些验证输入。此 SQL 查询仅使用基本的 sql 日期函数,但不使用任何数据库列。示例查询:Select UNIX_TIMESTAMP(NOW()) < UNIX_TIMESTAMP(CASE WHEN DAYOFMONTH(NOW()) <= 10THEN add_MONTHS(DATE_ADD(NOW(), (-1*DAYOFMONTH(NOW()))+1),-1)ELSE DATE_ADD(NOW(), (-1*DAYOFMONTH(NOW()))+1) END)当我将连接对象配置到某个真实数据库时,我可以运行它。但我不觉得为了这个目的而使用数据库和管理它是不值得的。有没有一种方法可以在我的代码中执行这些类型的查询或查询,例如 select date() from dual 等。
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

坦率地说,如果您要进行 SQL 数据库查询……通常最好有一个数据库来查询:)

此外,如果您的目的是“测试”您的查询......因为许多事情都是特定于数据库的 - 通常最好有一个您希望测试的实际数据库的实例。

话虽如此,在没有底层数据库的情况下执行 SQL 有很多选择:

  • 您可以使用在线“fiddle”来测试 SQL 查询,例如SQLFiddle.com

  • 对于单元测试,您将使用模拟框架。例如,对于 Java/JUnit,我会使用Mockito

  • 如果我正在测试 Spring/Hibernate 数据访问,我会使用内存中的轻量级H2数据库。

真的有很多很多的选择。这一切都取决于您的特定“用例”;你真正想要完成的事情。

PS:

我给出了一些 Java 示例。这是一篇关于模拟 Microsoft/EF 数据调用的文章:

https://entityframework.net/how-to-mock-data


查看完整回答
反对 回复 2022-05-21
?
繁花如伊

TA贡献2012条经验 获得超12个赞

不,sql 查询需要针对数据库引擎运行。

例如 select date() from dual 是一个 oracle 查询;你不能对 mssql 或 mysql 运行它。



查看完整回答
反对 回复 2022-05-21
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信