带有AND和OR运算符的SQL select语句发出
我正在使用经典ASP从SQL Server 2000数据库中获取记录。这就是我使用的代码 ASP代码:带有AND和OR运算符的SQL select语句发出,sql,asp-classic,vbscript,sql-server-2000,ado,Sql,Asp Classic,Vbscript,Sql Server 2000,Ado,我正在使用经典ASP从SQL Server 2000数据库中获取记录。这就是我使用的代码 ASP代码: <form name="search" method="post" onsubmit="return attention();"> <table width="60%" border="0" cellpadding="2" cellspacing="0" style="margin:0 auto"> <tr> <td colspan="2"&g
<form name="search" method="post" onsubmit="return attention();">
<table width="60%" border="0" cellpadding="2" cellspacing="0" style="margin:0 auto">
<tr>
<td colspan="2"><h1 style="color:#003399;">Search for Certificate of Analysis</h1></td>
</tr>
<tr>
<td valign="bottom">Product number <sup style="color:#EE0000;font-size:1.3em">*</sup></td>
<td valign="bottom">Lot number</td>
</tr>
<tr>
<td width="30%" valign="top">
<input type="text" name="input1" size="20"/>
</td>
<td valign="top">
<input type="text" size="20" name="input2"/>
<input style="background-color:#ffffff;border:0px;cursor:pointer" size="10" type="submit" name="sub" value=">>" />
</td>
</tr>
</table>
<%
if request.Form("sub") <> "" then
Dim fname, lname
fname= request.Form("input1")
lname= request.Form("input2")
session("n") = fname & lname
sql = "Select * from search where cat_no_batch_no LIKE '"&request.Form("input1")&"%' OR cat_no_batch_no='"&session("n")&"'"
rs.open sql, con, 1, 2
if rs.eof then
response.write("Please provide a valid Cat No.")
else
do while not rs.eof
%>
<table border="1" cellpadding="5" cellspacing="0" width="60%" style="margin:0 auto; border-collapse:collapse;border-color:#999999">
<tr>
<td width="50%"><%=rs("cat_no_batch_no")%></td>
<td width="10%">Click to open <a target="_blank" href="http://localhost/search1/<%=rs("pdf_path")%>"><%=rs("cat_no_batch_no")%></a></td>
</tr>
</table>
<%
rs.movenext
loop
end if
rs.close
end if
%>
</form>
搜寻化验证明书
产品编号*
批号
点击打开
上面的LIKE语句按预期工作,并显示多条记录,其中包含类似的类别编号。
当我在第一个输入框中输入一个类别号并在另一个输入框中输入批号时,问题就会出现。我所需的输出应该只是一条要显示的记录,因为我已经给出了分类号和批号,但它显示了多条记录
我提供了更清晰的图像
我想您可以根据是否提供“批号”编写两个单独的SQL查询。 您的代码可能如下所示:
if lname = "" then
sql = "Select * from search where cat_no_batch_no LIKE '"&request.Form("input1")&"%'"
else
sql = "Select * from search where cat_no_batch_no LIKE '"&session("n")&"%'"
end if
我希望这能有所帮助我想您可以根据是否提供“批号”编写两个单独的SQL查询。 您的代码可能如下所示:
if lname = "" then
sql = "Select * from search where cat_no_batch_no LIKE '"&request.Form("input1")&"%'"
else
sql = "Select * from search where cat_no_batch_no LIKE '"&session("n")&"%'"
end if
我希望这能帮助你自己读懂你的问题并思考你在说什么: 您声明“我的期望输出应该只是一条要显示的记录,因为我已经给出了分类号和批号” 但是在您的SQL中,您编写了
其中cat\u no\u batch\u no LIKE'”&request.Form(“input1”)和“%”或cat\u no\u batch\u no=”&session(“n”)和“
关键词是和vs.或
在你的头脑中,你认为这两个条件都必须是真的,但你的疑问是相反的。如果希望这两个条件都为真,则必须使用AND运算符
Naoki正在做一些事情-您必须根据指定的标准修改SQL。阅读您的问题并思考您所说的: 您声明“我的期望输出应该只是一条要显示的记录,因为我已经给出了分类号和批号” 但是在您的SQL中,您编写了
其中cat\u no\u batch\u no LIKE'”&request.Form(“input1”)和“%”或cat\u no\u batch\u no=”&session(“n”)和“
关键词是和vs.或
在你的头脑中,你认为这两个条件都必须是真的,但你的疑问是相反的。如果希望这两个条件都为真,则必须使用AND运算符
Naoki发现了一些问题-您必须根据指定的标准修改SQL。尝试
和而不是或。尝试和而不是或。这不是我想要的,谢谢您的回复。仍然在寻找解决办法。@naokiNot正是我想要的,谢谢你的回复。仍在寻找解决方法。@Naokit感谢您的答复,但仍对如何实施感到困惑。感谢您的答复,但仍对如何实施感到困惑。