2

我有一个 jsp 页面,它向 servlet 发送请求,以根据选定的下拉值过滤表中列的结果,该下拉值由对 MSSQL 数据库的 SQL 查询填充。现在我遇到了下拉列表中的一个项目有括号( something[something] )的问题,并且由于某种原因,当我选择该项目并过滤表格时,即使很明显有它也不会返回任何结果在过滤器之前与该项目一起显示的数据行。这是我现在在 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>

所有其他项目都可以正常工作,只有文本、数字或括号,过滤器将按预期按这些项目过滤表格。

4

1 回答 1

1

您需要[使用[]. 因此,如果您要查找名称t[t],您的查询将是

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

更新

第二种方法是在左括号上使用转义选项[(这对我来说是新的,WOOHOO)

select * from student where name like '%t\[t]%' escape '\'
于 2013-01-29T15:50:06.233 回答