HQL中的Like查詢需要注意的地方

public List getOrgan(String organCode, String organName) {
    String hsql;
    List list;

    if (organCode != null && organCode.length() > 0) {
     hsql = "from Ab31 where bae002 = ? and aab061 like ?";
     list = getHibernateTemplate().find(hsql, new Object[] { organCode, '%' + organName + '%' });
     }

    else {
     hsql = "from Ab31 where aab061 like ?";
     list = getHibernateTemplate().find(hsql, '%' + organName + '%');
     }

    return list;
}

我在HQL中like查詢的時候按照SQL語法用雙引號組合 "%' "+ organName + "'%" 查不到任何結果,所以必須注意這裏只能使用單引號,如:'%' + organName + '%' ,多個【佔位符】用new Object[] { organCode, organName } 來填充

like語法簡介:

%    表示任意個數的任意字符

_    表示任意一個字符

[abcdefg]   表示裏面的字符任何一個,只取一個

[^c]           表示裏面的字符不包含c

[a-z]          表示區間中的任一個,如c或d等

[^a-z]        表示非區間中的任一個

escape '/'     轉義符,表示/之後的字符不是特殊字符。

like '%商品/%模板%' escape '/'    可以查出   商品%模板 特殊字符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章