查询SQL时,特别是涉及多个表的关联查询,条件通常分布在不同的表中。为了让SQL语句更简洁且效率不受显著影响,即使条件表达式为空,也建议在where子句中保留关联条件。
select t1.col1, t2.col2, t3.col3, t1.col from t1, t2, t3 where t1.id1 = t2.id1 and t2.id2 = t3.id2 and t1.col1 = ? and t2.col2 between ? and ? and t3.col3 in (?,?,?) and t1.col like ?关于查询条件的拼写规范:
1. 全部查询时,前端传递的条件为空时,可以将其转换为一个恒真条件。例如,使用(" " = ? || col1 = ?)来处理
2. 多选条件时,考虑到PreparedStatement的参数数量限制,可以采用以下方式处理:将条件用逗号分隔,并使用instr函数判断是否包含特定值。在处理前端传递的空值时,可以将其转换为-1,以确保条件总是成立
3. 模糊查询时,根据需要在条件字符串的前后添加模糊字符(如%),仍然使用问号作为占位符
在编写SQL时,可以通过以上方法确保查询条件的灵活性和可维护性,同时兼顾性能和可读性