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をチェックし、nullでない場合は私のコードを使用する方法(SUBSTRING(TYP_PCON_END,1,4) >= ?) と別の方法:

? >= ?

nullの場合?

4

1 に答える 1

0

使用できますCOALESCE

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

デフォルト値の部分文字列が必要ない場合は、次のようにします。

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

SUBSTRINGnull 値に対して a を実行すると null も生成されるため、これは機能します。

于 2013-01-24T20:20:32.810 に答える