SQL多条件查询几种实现方法详细介绍

2 02 2 年,我在北京做一个项目,当我遇到SQL的多条件查询时,对我的打击确实很大。
排列和组合看似简单,但条件太多可能会导致混乱。
例如,假设您有三个条件:a、b、c、空或不空。
总共存在八种情况。
编写八个小语句可以加起来很多代码。
后来我发现,这是非常难以维护的,我必须一件一件地经历它才能改变任何东西。

那么动态拼接SQL的方式就非常灵活了。
这非常方便,因为当条件发生变化时,您可以随时更改 SQL。
但安全风险很大,尤其是像北京这样的大工厂,安全是重中之重。
我在拼凑的时候不小心弄破了一个洞。
如果有人攻击你,那就结束了。
后来我才知道,连接之前需要验证,而且不灵活。

逻辑表达法,这是我经常使用的方法。
例如,要验证用户,您需要按日期和名称进行验证。
如果日期为空,请检查所有姓名。
如果名称为空,请检查所有名称。
写SQL并用AND或OR连接起来就很不错了。
然而,如果条件太复杂或嵌套,人们可能会陷入困境。
写完后,你自己可能无法理解,所以请同事帮你读。

CASEWHEN 语法,很少使用。
感觉很酷,可以让你实现特别复杂的逻辑。
但如果你写下来,你会迷惑自己,更迷惑别人。
表现一般。
我在上海就遇到过一次。
我用它来查库存,但是花了很长时间,客户还骂我。
然后我改用逻辑公式方法。
这要快得多。

总的来说,逻辑表达方法简单,易于维护,所以我经常使用它们。
不过,使用哪一种还要根据情况而定。
条件有很多吗?您的安全要求高吗?您的客户很着急吗?在选择方法之前请清楚地考虑这些。
北京这样的地方安全第一,不要太灵活。

sql语句查询日期格式为yyyy sql以日期为条件的查询

直接使用字符串比较:2 02 3 1 001 ,将返回所有结果。
使用 BETWEEN: 2 02 3 1 001 AND 2 02 3 1 03 1 ,结果跨度 1 0 个月。
格式转换后比较:CONVERT(varchar, datefield, 1 2 0),确保格式匹配后结果才正确。
搜索特定周:DATEPART(weekday, datefield)=1 ,返回每周第一天的记录。
时区 注意:搜索前请确认数据库时区,避免比较错误。