我想通过从下拉列表中选择包含=
和LIKE
的值来运行查询。
这是html: -
<td valign="left" width="20%">
<asp:DropDownList ID="ddlmathsign" runat="server" Style="width: 30%; background-repeat: no-repeat;
background-position: bottom right; border: solid 1px #ACACAC; font-family: Tahoma,Arial,Helvetica,Geneva,sans-serif">
<asp:ListItem Value="Equal">=</asp:ListItem>
<asp:ListItem Value="LIKE">LIKE</asp:ListItem>
</asp:DropDownList>
</td>
我希望根据用户从列表中选择的操作符来查询Current_Item_Batch
。
select * from WMS_BIN_STATUS_TRACK where location_name='A1132' or Current_Item_code='4059010' or (CASE WHEN Current_Item_Batch = 'what query should come here ???'
我尝试使用以下查询case
,但它对我不起作用
"select * from WMS_BIN_STATUS_TRACK where " +
"location_name='" + ddlBin.SelectedValue + "' or Current_Item_code='" + ddlItem.SelectedValue + "' or "+
"(CASE WHEN Current_Item_Batch = " + ddlmathsign.SelectedValue + " then Current_Item_Batch='" + txtBatch.Text + "'";
请说明这里出了什么问题
我正在使用 SQL server 2005
答案 0 :(得分:1)
我不在电脑前,但这是一个想法。这当然只是一个伪代码,但您将看到如何构造语句而不是case表达式:
or (@selecteditem = 'equal' and Current_Item_Batch = 'txtBatch.Text')
or (@selecteditem = 'like' and Current_Item_Batch like '%txtBatch.Text%')
或者你可以动态生成sql语句:
..."' or Current_Item_Batch " +
ddl.selectedvalue == "equal" ? (" = '" + txtBatch.Text + "'") :
(" like '%" + txtBatch.Text + "%'")
在处理这样的陈述时,总要考虑注射威胁。