我有这样的代码: (在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中为空....在这种情况下如何使用not null,但是我的值,由ruby(date.now(YEAR))发送?
那么如果field为null又如何使用其他值?
如何检查null,如果不为null (SUBSTRING(TYP_PCON_END,1,4) >= ?)
则使用我的代码
另一个:
? >= ?
如果为null?
答案 0 :(得分:0)
您可以使用COALESCE
:
SUBSTRING(COALESCE(TYP_PCON_END, 'some default string'),1,4) > ?
如果您不需要子字符串作为默认值,那么您只需这样做:
COALESCE(SUBSTRING(TYP_PCON_END,1,4), 'AAAA') > ?
这是有效的,因为对空值执行SUBSTRING
也会产生空值。