在jsp中过滤字符串不支持[]

时间:2013-01-29 14:51:15

标签: java sql jsp

我有一个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>

所有其他项目工作正常,只有文本,数字或括号,过滤器将根据预期过滤表格。

1 个答案:

答案 0 :(得分:1)

您需要使用[转义空心括号[]。因此,如果您要查找名称t[t],则查询将为

select * from student where name like '%t[[]t]%'

<强>更新

第二种方法是在开放式括号[上使用转义选项(对我来说是新手,WOOHOO)

select * from student where name like '%t\[t]%' escape '\'