• 为什么SQL语句加 1=1


    是为了链接下面的查询条件条件,也或者是替换没有查询条件的语句。
    比如:要把检索条件作为一个参数传递给SQL,那么,当这个检索语句不存在的话就可以给它赋值为1=1.这样就避免了SQL出错,也就可以把加条件的SQL和不加条件的SQL合二为一。

    这个就是为了方便sql条件的拼接,在“where”和“and”的地方方便处理(这里以“and”关键字举例)


    假如有如下5列条件可以任意组合:
    a='a'; b='b'; c='c'; d='d'; e='e'

    第一种方案:
    如果初始sql为: select * from t1

    我们在生成最终的sql时就需要分情况判断
    1。一个条件也不带,sql保持不变
    2。如果至少有一个条件,我们就需要在sql后面加一个“where”来连接条件
    3。如果至少有二个条件,“where”后面的第一个条件前面是不需要“and”的,因为5列条件可以任意组合,我们就需要判断哪一列会是紧跟在“where”后面的,这时候又需要代码来判断

    第二种方案:
    如果初始sql是这样:select * from t1 where 1=1

    现在对于第一种方案里面的任何一种情况,我们都只需要直接在sql后面加上“and + 对应的条件”就行了,不用另外写代码判断
    比如:
    sql = sql + ' and ' + a='a' ---> select * from t1 where 1=1 and a='a'
    sql = sql + ' and ' + b='b' ---> select * from t1 where 1=1 and b='b'
    sql = sql + ' and ' + c='c' + " and " + d='d' ---> select * from t1 where 1=1 and c='c' and d='d'

    特别是当条件很多,程序中又能循环动态的添加条件的时候很方便
    下面用伪代码举例:
    sql = select * from t1 where 1=1;
    for (int i = 0; i < column.Count; i++)
    {
    sql = sql + " and " + column[i].Name + "='" + column[i].Value + "'";
    }
    最终生成的sql就类似如下的:
    select * from t1 where 1=1 and a='a' and b='b' and c='c' and d='d' and e='e'

  • 相关阅读:
    Node.js基础学习一之Get请求
    Node.js学习准备篇
    如何在eclipse添加SVN菜单
    Java泛型的好处
    mybatis多数据源配置
    Python map() 函数
    python split()使用方法
    pythom os 模块
    深浅copy
    小数据池
  • 原文地址:https://www.cnblogs.com/yuhuameng/p/5496728.html
Copyright © 2020-2023  润新知