2013-01-24 40 views
0

我有這樣的代碼: (上回報率):如果mysql的空場採取一些價值

@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是空的分貝....如何在這樣的情況下,使用不爲空,但我的價值,由紅寶石發佈(date.now(YEAR))?

那麼如果field爲null使用另一個值? 如何檢查空,如果不爲空(SUBSTRING(TYP_PCON_END,1,4) >= ?) 和另一個使用我的代碼:

? >= ? 

如果空?

回答

0

您可以使用COALESCE

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

如果您不需要子作爲默認值,那麼你只需做這種方式:

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

這工作,因爲做了空值上的SUBSTRING也將產生空值。

+0

但對於我的默認值,我不需要子字符串 –

+0

@ValdisAzamaris - 知道了,更新了我的答案。 –