0

我有这样的代码:(在 RoR 上):

@types = Type.where("TYP_MOD_ID = ? AND (SUBSTRING(TYP_PCON_START,1,4) <= ?) AND (SUBSTRING(TYP_PCON_END,1,4) >= ?) AND TYP_KV_FUEL_DES_ID = ? ", params[:models], params[:year], params[:year], params[:fueltype]).order("TYP_HP_FROM")

但有时 TYP_PCON_END 在 db 中为 null ......在这种情况下如何使用不是 null,而是我的值,由 ruby​​ (date.now(YEAR)) 发送?

那么如果字段为空如何使用另一个值呢? 如何检查null,如果不为null,则使用我的代码(SUBSTRING(TYP_PCON_END,1,4) >= ?) 和另一个:

? >= ?

如果为空?

4

1 回答 1

0

您可以使用COALESCE

SUBSTRING(COALESCE(TYP_PCON_END, 'some default string'),1,4) > ?

如果您不需要默认值的子字符串,那么您只需这样做:

COALESCE(SUBSTRING(TYP_PCON_END,1,4), 'AAAA') > ?

这是可行的,因为SUBSTRING对空值执行 a 也会产生空值。

于 2013-01-24T20:20:32.810 回答