プレースホルダ付きのあいまいなクエリー、CLOBタイプのあいまいなクエリー

1506 ワード

1.プレースホルダ付き?のあいまいなクエリー:
例えばクエリーt_nameフィールドには、変数nameのレコードが含まれます.
List<Object> params = new ArrayList<Object>();
params.add("%" + name + "%");
String hql = "select t from Person t where t.t_name like ?";
List<Person> list = service.getPersonByHql(hql,params.toArray());

2.CLOBタイプのあいまいなクエリー:
開発中にCLOB型データのファジイクエリ(remarkのファジイクエリなど)に遭遇することが多く、解決策は以下の通りである.
params.add(remarkStr);
String hql = "select t from Person t where dbms_lob.instr(t.remark, ?,1,1)> 0";//    Oracle   
  :Oracle    DBMS_LOB.instr            , clob    N          ;
Oracle    DBMS_LOB.substr     clob          ,      。  :DBMS_LOB.substr(remark,4000,1)
DBMS_LOB instr substr  :http://ifindit.blog.sohu.com/163919197.html
http://blog.csdn.net/swordmanwk/article/details/6204611

次の方法は、ほとんどのデータベースに適用できます.
params.add("%" + remarkStr+ "%");
String hql = "select t from Person t where t.remark like ?";//        ,    

3.CLOBタイプの正確なクエリー:
params.add(remarkStr);
//String hql = "select t from Person t where t.remark = ?";//  !!!    
String hql = "select t from Person t where t.remark like ?";//  !       :       like,     ,             
  :  CLOB                   like,                   。