Yeah, if you're going to conditionally add filters, this is mostly the only way with SQL. There are a few tricks depending on the dialect, like =ANY() is more convenient than IN, or COALESCE can avoid some dynamic WHEREs.
You're not really missing anything other than query builders, which are worse for other reasons.
You're not really missing anything other than query builders, which are worse for other reasons.