2

サーブレットにリクエストを送信して、選択したドロップダウン値に基づいてテーブル内の列の結果をフィルタリングする jsp ページがあります。これは、SQL クエリによって MSSQL データベースに入力されます。現在、ドロップダウンの項目の 1 つに角かっこ ( 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]%'

アップデート

2番目の方法は、開いたブラケットでエスケープオプションを使用すること[です(これは私にとっては初めてのことです、WOOHOO)

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