为啥问号在 %% 内不起作用? [复制]

Posted

技术标签:

【中文标题】为啥问号在 %% 内不起作用? [复制]【英文标题】:Why is question mark not working inside %%? [duplicate]为什么问号在 %% 内不起作用? [复制] 【发布时间】:2021-04-09 06:20:02 【问题描述】:

我使用java jdbc连接数据库sql server,但是%%里面的问号不工作

这是我的代码:

public List<Account> findBetween(String search, int start, int size) 
    try 
        ArrayList<Account> list = new ArrayList<Account>();
        String sql = "SELECT * FROM Account WHERE uname LIKE '%?%' ORDER BY user_id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
        Connection conn = ConnectDB.openConnection();
        PreparedStatement st = conn.prepareStatement(sql);
        st.setNString(1, search);
        st.setInt(2, start);
        st.setInt(3, size);
        ResultSet rs = st.executeQuery();
        System.out.println(rs.getFetchSize());
        while (rs.next()) 
            list.add(new Account(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getNString(4), rs.getNString(5),
                    rs.getNString(6), rs.getString(7), rs.getString(8), rs.getDate(9), rs.getInt(10),
                    rs.getBoolean(11)));
        
        ConnectDB.closeConnection();
        return list;
     catch (Exception e) 
        e.printStackTrace();
        ConnectDB.closeConnection();
        return null;
               

【问题讨论】:

我找不到一个好的来源,但基本上准备好的语句参数需要是一个完整的值,所以你需要使用LIKE ?并将%字符添加到search. 【参考方案1】:

绑定变量在字符串文字中不起作用。

你必须绑定整个字符串

uname LIKE ?
st.setNString(1, "%" + search + "%")

或使用字符串连接

uname LIKE '%' || ? || '%'
set.setNString(1, search)

请注意,在这两种情况下,search 中包含的任何其他通配符也将有效,因此如果这是直接用户输入,您可能需要先对其进行清理。

【讨论】:

它工作正常。谢谢

以上是关于为啥问号在 %% 内不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 在 UItableViewCell 内不起作用

扑。列 mainAxisAlignment spaceBetween 在 Row 内不起作用

Alamofire 呼叫在循环内不起作用

swift isUserInteractionEnabled = false 在 UITapGestureRecognizer 内不起作用

为啥复制功能在 setTimeout 中不起作用?

Textblock.TextTrimming 在网格内不起作用