Je refactorisation un vieux code et trébuché sur cette requête nommée (Il utilise en veille prolongée au-dessus de mysql):Pourquoi utiliser COALESCE() dans l'instruction SQL
delete F from
foo F
inner join user DU on F.user_id = DU.id
where
(COALESCE(:userAlternateId,null) is null or DU.alternate_id like :userAlternateId)
and (COALESCE(:fooId,null) is null or F.foo_id like :fooId)
and (
(COALESCE(:fromUpdated,null) is null or F.updated_at>=:fromUpdated)
and (COALESCE(:toUpdated,null) is null or F.updated_at<=:toUpdated)
)
Je ne comprends pas pourquoi ce COALESCE est utilisé de cette façon: COALESCE (: userAlternateId, null) est null
est-ce un hack de performances ou fait-il la base de données de requête indépendante ou ...?
BTW userAlternateId est une chaîne/varchar, d'autres id sont longs et à partir des dates
Quelle saveur de SQL? – slugster
@slugster il dit MySQL (premier paragraphe) - à moins que ce soit Hibernate HQL? – Rup
Ahh bien sûr ... j'étais trop occupé à regarder le SQL pour le remarquer. COALESCEing un null à null m'a distrait. – slugster