【问题标题】:How to make a method calling an SQL query that returns a blank string instead of NULL when the query result is empty?当查询结果为空时,如何使调用返回空字符串而不是 NULL 的 SQL 查询的方法?
【发布时间】:2018-06-26 09:58:41
【问题描述】:

我有一个方法可以在数据库中运行 JDBC 调用以收集预期的结果,然后我使用另一种使用 Selenium 的方法从 UI 收集的结果断言。

我在这里面临的问题是,查询可能没有得到任何结果,所以当我调用返回字符串的方法时,当查询结果为空时,它实际上会返回 NULL。

当我尝试对 UI 值进行断言时,这会导致问题。 Selenium 将为有问题的值返回一个空字符串,而 db 返回 NULL。

所以为了让我的 assertEquals 匹配,我理想地希望 db 方法返回 "" 而不是 NULL。

我尝试了 .replace 和 IF 语句,但它总是返回 NULL。

如果有帮助,我的 JDBC 方法中的代码如下所示:

String strMedicare = rs.getString("_Provider_Number");
return strMedicare;

【问题讨论】:

  • String strMedicare = "" + rs.getString("_Provider_Number");
  • 感谢所有回复。我最终采用了@ScaryWombat 链接的方法,我首先进行行计数,然后通过返回“”为 rowcount = 0 的 if 语句传递我的代码。感觉像一个冗长的方法,但它有效。
  • 刚刚看到@BillHileman 的评论,这似乎是我实施的最快的解决方案。

标签: java selenium automation


【解决方案1】:

在 SQL 端处理此问题的一种方法是将查询修改为以下内容:

SELECT COALESCE(_Provider_Number, '') AS _Provider_Number
FROM yourTable
...

然后,如果提供者编号为空,您的数据库将自动返回空字符串。

【讨论】:

  • 谢谢蒂姆。我确实想过从查询方面解决问题,但问题是查询甚至不返回空行,它只返回一个空行,因此查询结果 = 0 行。
  • @Matt 那么在这种情况下,您应该将其视为 SQL 问题,向我们展示您的示例数据以及查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
相关资源
最近更新 更多