zoukankan      html  css  js  c++  java
  • 为什么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'

  • 相关阅读:
    电子招投标应用系统连载(一)-开标系统
    js实现一个简单钟表动画(javascript+html5 canvas)
    ,net core mvc 文件上传
    echarts显示X轴最后一个lable
    C# 解压gzip文件(.tgz)
    【转】C#计算两坐标点距离
    用file标签实现多图文件上传预览
    c#数据批量插入
    Asp.net 中ViewState,cookie,session,application,cache的比较
    ASP.NET MVC从请求到响应发生了什么
  • 原文地址:https://www.cnblogs.com/yuhuameng/p/5496728.html
Copyright © 2011-2022 走看看