mysql - Unintended behavior: Subtraction between null values results in '0' -
when either 1 of field null
, want returned value null
well. have tried reversing logic: is not null
. still same results.
mysql code:
(case when ((`creative_stg_sample_tracking_raw`.`total_samples_received` not null) , (`creative_stg_sample_tracking_raw`.`total_samples_forecasted` not null)) (cast(`creative_stg_sample_tracking_raw`.`total_samples_received` signed) - cast(`creative_stg_sample_tracking_raw`.`total_samples_forecasted` signed)) else null end) `received_forecasted_dif`
screenshot:
your code should working, don't need case
. whenever 1 of values null
, expression should null
:
(cast(`creative_stg_sample_tracking_raw`.`total_samples_received` signed) - cast(`creative_stg_sample_tracking_raw`.`total_samples_forecasted` signed)) ) `received_forecasted_dif`
i wonder if problem value 'null'
rather null
. is, string value rather real null. mysql treat string 0
in arithmetic.
you can fix doing:
(case when `creative_stg_sample_tracking_raw`.`total_samples_received` <> 'null' , `creative_stg_sample_tracking_raw`.`total_samples_forecasted` <> 'null' (cast(`creative_stg_sample_tracking_raw`.`total_samples_received` signed) - cast(`creative_stg_sample_tracking_raw`.`total_samples_forecasted` signed)) ) else null end) `received_forecasted_dif`
Comments
Post a Comment