java - 如果找不到记录,则 SQL 查询调用失败

标签 java mysql sql json database

我正在尝试从 sql 数据库中获取一个字符串。我有以下查询:

select DISTINCT HARDWARE.NAME
from HARDWARE INNER JOIN
     HARDWARE_LINKING
     on HARDWARE.ID = HARDWARE_LINKING.ID
where HARDWARE_LINKING.EXTERNALID='5528752'.

现在,当没有针对任何 id 的记录时,函数调用将失败。 这是我调用以获取数据的函数代码:

public String search(String externalId) {
  String SQL = "select DISTINCT HARDWARE.NAME  from HARDWARE INNER JOIN HARDWARE_LINKING on HARDWARE.ID = HARDWARE_LINKING.ID where HARDWARE_LINKING.EXTERNALID=?";
        Object[] input = new Object[] {externalId};
        String name = jdbcTemplate.queryForObject(SQL,input, String.class);
        return name;
}

有什么方法可以返回默认值吗?有时会返回多个值,但我只想返回单个字符串值,这可能吗?提前谢谢你

最佳答案

一种方法是将默认值放入查询本身。使用聚合函数和 COALESCE():

select coalesce(h.NAME, '<default value>') as NAME
from HARDWARE h INNER JOIN
     HARDWARE_LINKING hl
     on h.ID = hl.ID
where hl.EXTERNALID = '5528752';

没有 GROUP BY 的聚合查询总是 返回一行,所以这似乎更符合您的需求。

另请注意,我将表别名放入查询中。这些使查询更易于编写和阅读。

关于java - 如果找不到记录,则 SQL 查询调用失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40450473/

相关文章:

java - 如何从浏览器区域拖动并存入浏览器区域?

java - 将测试文件导入 JUnit 的简单方法

Docker 中的 MySQL 在 root 密码配置中卡住

SQL Server - 查询短路?

sql - 将COUNT() sql查询的结果保存到powershell中的变量中

java - 如何刷新jFrame组件(jPanels)?

java - 使用 WIFE Java 库的 SWIFT MT 消息解析

php - MySQL事务超时多久

mysql - 保持 MySQL 表中的某些行不变

sql - 查询不适用于外键作为另一个表 Oracle SQL 的复合主键