java - 如何在 java-Mysql 选择查询中使用带参数的正则表达式?

标签 java mysql regex concatenation

我想通过多个参数从数据库中选择记录

我尝试将列与 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+"'  " ;  `

最佳答案

避免对准备好的语句使用参数串联。更喜欢通过问号使用占位符,并通过 preparedStatement.setString() 进行替换,尤其是针对注入(inject)

....
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();
    ......

关于java - 如何在 java-Mysql 选择查询中使用带参数的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57339868/

相关文章:

java - 将整数插入排序数组

java - 如何创建一个具有特定字符前后子字符串名称的文件

MYSQL根据修剪后的id拉取5张表上的搜索数据

带有 ØÆÅ 字母的 Python 正则表达式

java - 我可以在 DateTimeFormatter 上对区域偏移格式进行更多控制吗

mysql字母顺序

MYSql 配置绑定(bind)地址设置为 0.0.0.0 但 netstat 在 Ubuntu 上显示不同

javascript - 将变量或数组中存储的值与字符串 javascript 正则表达式进行匹配

java - 在 Java 中,如何对标记中包含分隔符的字符串进行标记?

java - Android JDBC : Some issues with using MySql JDBC in Eclipse