zoukankan      html  css  js  c++  java
  • 最简洁的Sql多重查询的解决方案[经典]

    最简洁的多重查询的解决方案
     
    [前言]
    我们经常会遇到多重查询问题,而长长的SQL语句往往让人丈二和尚摸不着头脑。特别是客户端部分填入查询条件时,如用普通方法将更是难上加难。
    以下巧妙地利用"where 1=1"的恒等式(事实上很多,让它值为TRUE即可)解决此问题。

    [正文概要]

    'subject 信息标题
    'company 发布信息的公司名称
    'content 发布信息的内容
    'address 公司地址
    'infomation 公司简介
    'note 相关说明
    以上值均由FORM提交,然后通过:subject=trim(Request.Form("subject"))等得到相应的值。

    <%
    '这个函数很关键!---------------------------
    Function sql(a,b,sqls)
    if b<>"" then '如果客户端没有提交此值,则不会产生相应的SQL语句。
    sqls=sqls & " and " & a & " like '%" & b & "%'"
    end if
    sql=sqls
    End Function
    '-----------------调用数据库
    Set conn=Server.CreateObject("ADODB.Connection")
    DBpath=Server.MapPath("/database/mydb.mdb")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};pwd=;dbq=" & DBpath
    Set rs=Server.CreateObject("ADODB.Recordset")
    sqls="select * from mytable where 1=1 "
    '以下调用上面的函数即可,可以很多个调用(理论上是任意)
    sqls=sql("subject",subject,sqls)
    sqls=sql("company",company,sqls)
    sqls=sql("content",content,sqls)
    sqls=sql("address",address,sqls)
    sqls=sql("infomation",infomation,sqls)
    sqls=sql("note",note,sqls)
    sqls=sqls & " order by id desc"
    rs.open sqls,conn,3,2
    %>

    [结束语]
    如果没有关键的函数Function sql(a,b,sqls),我们可以想象,需要多少判断的一个接一个的语句!

    文章放在电脑中很长时间了,觉的还不错,值的学习。可惜不知道本文作者是哪位了,有谁知道的请告诉下,谢谢。

  • 相关阅读:
    uva 408 Uniform Generator
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 栅格打印问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 打水问题
    Java实现 蓝桥杯VIP 算法提高 不同单词个数统计
    Java实现 蓝桥杯VIP 算法提高 不同单词个数统计
  • 原文地址:https://www.cnblogs.com/Apollo/p/426324.html
Copyright © 2011-2022 走看看