簡體   English   中英

使用LIKE查詢在mysql中使用撇號獲取記錄

[英]fetch records with apostrophe in mysql using LIKE query

我有這樣的MYSQL查詢

String query="select DISTINCT sctName from snomedicd10map where sctName Like '" + search + "%" + "' LIMIT 5 ";

此查詢是自動完成的,如果在鍵入Apostrophe(')時搜索諸如代碼,女孩等之類的詞,則會發生空點異常

我該如何克服。 當用戶在文本字段中使用Apostrophe(')輸入名稱時,應獲取結果。

我從mysql數據庫中獲取了結果。

我怎樣才能做到這一點。

通常,當您使用硬編碼名稱時,您可以重復並轉義

Select * from Students where name like 'John O''Neal' 

如果要使用它們,請對字符串進行清理或使用參數化的查詢。 查看准備好的語句。

您應該使用PreparedStatement ,這樣它將為您處理轉義。 例如:

try (PreparedStatement pstmt = Connection.prepareStatement("select DISTINCT sctName from snomedicd10map where sctName Like concat(?, '%') LIMIT 5") {
    pstmt.setString(1, search);
    try (ResultSet rs = pstmt.executeQuery()) {
        // process result
    }
}

或者(在代碼中處理通配符):

try (PreparedStatement pstmt = Connection.prepareStatement("select DISTINCT sctName from snomedicd10map where sctName Like ? LIMIT 5") {
    pstmt.setString(1, search + "%");
    try (ResultSet rs = pstmt.executeQuery()) {
        // process result
    }
}

JDBC驅動程序將自動處理轉義(或以不需要轉義的方式發送參數)

這就是我在原始評論中所建議的,是您嘗試過的嗎?

String query="select DISTINCT sctName from snomedicd10map where sctName Like '" 
            + search.replaceAll("'", "\'") + "%' LIMIT 5 ";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM