我有一个jsp页面,它向servlet发送一个请求,根据选定的下拉值过滤表中列的结果,该下拉值由SQL查询填充到MSSQL数据库。现在我遇到问题,其中下拉列表中的一个项目有括号(某些东西),并且由于某种原因,当我选择该项目并过滤表格时,即使有明显的结果,它也不会返回结果在过滤器之前与该项一起显示的数据行。以下是我现在在jsp页面上的过滤器下拉列表:
<select title="Something Filter" name="${MODULE.REQUEST_SOMETHING}"
id="${MODULE.REQUEST_SOMETHING}" tabindex="30"
onkeydown="typeSelect(this, -1, 'xbin', 1);" onchange="clearTTID();"
onblur="clearTTID();">
<option value=""></option>
<c:forEach items="${requestScope.something}" var="row">
<option value="${row.something}"
<c:set var="setSelected" value="${row.something }" />
<c:if test="${requestScope.something eq setSelected}">selected</c:if>
>${row.something}</option>
</c:forEach>
</select>
所有其他项目工作正常,只有文本,数字或括号,过滤器将根据预期过滤表格。
答案 0 :(得分:1)
您需要使用[
转义空心括号[]
。因此,如果您要查找名称t[t]
,则查询将为
select * from student where name like '%t[[]t]%'
<强>更新强>
第二种方法是在开放式括号[
上使用转义选项(对我来说是新手,WOOHOO)
select * from student where name like '%t\[t]%' escape '\'