簡體   English   中英

我如何在 java-Mysql 選擇查詢上使用帶有參數的正則表達式?

[英]How do i use regexp with parameters on java-Mysql select query?

我想通過許多參數從數據庫中選擇記錄

我嘗試將列與 concat 結合起來並使用正則表達式

我可以運行此代碼,但我想使用實際參數而不是“NAME”和“1100”

String sorgu = 
    "Select per.* "
    + "from per_kimlik_bilgileri per"
    + " where  "
    + "concat"
    + "(pkb_tc_no, '/' , pkb_ad , '/' , pkb_soyad , '/' , 
   pkb_sicil_no , '/' , pkb_gorev_yeri , '/' , pkb_unvan_k , '/'"
    + " , pkb_gorev_k , '/' , pkb_istihdam_tipi ,'/', pkb_gor_drm) "
    +  "REGEXP   'NAME|1100'  " ;  

`

我試過這種方式,但沒有用

String sorgu = 
    "Select per.* "
    + "from per_kimlik_bilgileri per"
    + " where  "
    + "concat"
    + "(pkb_tc_no, '/' , pkb_ad , '/' , pkb_soyad , '/' , 
    pkb_sicil_no , '/' , pkb_gorev_yeri , '/' , pkb_unvan_k , '/'"
    + " , pkb_gorev_k , '/' , pkb_istihdam_tipi ,'/', pkb_gor_drm) "
    +   "REGEXP   '"+id+"' | '"+name+"'  " ;  `

避免在准備好的語句中使用參數串聯。 更喜歡使用問號占位符,以及使用 prepareStatement.setString preparedStatement.setString()替換,尤其是針對注入

....
PreparedStatement stmt = null;
try {
     String sorgu = 
    "Select per.* from per_kimlik_bilgileri per where  concat(pkb_tc_no, '/' , pkb_ad 
    ,'/' , pkb_soyad , '/' , pkb_sicil_no , '/' , pkb_gorev_yeri , '/' , pkb_unvan_k , '/'
    , pkb_gorev_k , '/' , pkb_istihdam_tipi ,'/', pkb_gor_drm) REGEXP ?|?  " ; 

    PreparedStatement preparedStatement = conn.prepareStatement(sorgu);

    preparedStatement.setString(1, name);
    preparedStatement.setString(2, val);

    ResultSet rs = preparedStatement.executeQuery();
    ......

將最后一行更改為

+   "REGEXP   '"+id+"|"+name+"'  " ;

'使語法錯誤。

暫無
暫無

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

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