java代码中的REGEXP

java代码中的REGEXP,java,jakarta-ee,native-sql,Java,Jakarta Ee,Native Sql,这是在sql中正确运行的查询。但是当我用java代码来处理它时。显示查询语法异常 SELECT * FROM faq WHERE question REGEXP 'general' 我的java代码 List<Object[]> results = getBaseDao().findByNativeSql(nativeSqlForSearch.toString(), 0,0); 我在这里看到了一些错误 您正在使用不同的变量: nativeSqlSerach 及 您正在使用

这是在sql中正确运行的查询。但是当我用java代码来处理它时。显示查询语法异常

SELECT * FROM faq WHERE question REGEXP 'general' 
我的java代码

 List<Object[]> results = getBaseDao().findByNativeSql(nativeSqlForSearch.toString(), 0,0);

我在这里看到了一些错误

  • 您正在使用不同的变量:

    nativeSqlSerach
    

  • 您正在使用字符串作为StringBuilder对象。这是错误的,我想知道为什么它没有编译失败。任用

    StringBuilder nativeSqlSerach = new StringBuilder("Select f from faq f where f.question REGEXP 'general'");
    
    稍后使用
    toString()
    ,或

    String nativeSqlSerach = "Select f from faq f where f.question REGEXP 'general'";
    
    没有
    toString()

  • 我不确定您是否发布了简化问题,但在上述情况下,您根本不需要任何
    REGEX
    。只需使用
    =
    或类似于通配符符号的


  • 您不需要对字符串调用
    toString()
    findByNativeSql
    调用中的两个零代表什么?我仍然得到错误是REGEXP可以在java中使用?
    nativeSqlForSearch.toString()
    不是
    nativeSqlSerach
    ,注意:nativeSqlForSearch是StringBuilder,因此我必须将其转换为字符串,我得到的错误是您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在“REGEXP”body')t'附近使用的正确语法
    StringBuilder nativeSqlSerach = new StringBuilder("Select f from faq f where f.question REGEXP 'general'");
    
    String nativeSqlSerach = "Select f from faq f where f.question REGEXP 'general'";