我正在尝试从sql db中获取字符串。我有以下查询:
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;
}
有什么办法可以返回默认值吗?有时返回多个值,但我只想返回单个字符串值,这可能吗?提前谢谢
答案 0 :(得分:0)
一种方法是将默认值放入查询本身。使用聚合函数和>>> HOUR_ON = str("08:09:00")
>>> a = datetime.datetime.strptime(HOUR_ON,'%H:%M:%S')
>>> HOUR_ON = a + datetime.timedelta(0,1800)
>>> print HOUR_ON
1900-01-01 08:39:00
:
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';
的聚合查询总是会返回一行,所以这似乎更符合您的要求。
另请注意,我将表别名放入查询中。这些使查询更容易编写和阅读。
答案 1 :(得分:0)
您应该能够检查名称是否为null或isEmpty,然后决定是否应该从查询中返回名称或默认值。
if(name != null && !name.isEmpty()){
return name;
} else {
return "default";
}