大家好 本人目前在学Java 写Java连接数据库的时候遇到了一个模糊查询百分号不知道如果拼接 麻烦老手看一下

解决方案 »

  1.   

    这个你可以在SQL里面直接写:like ?,然后在传参数的时候对参数处理一下,例如:studentName = "%" + studentName + "%"。还有一种是直接在SQL里面处理的,like  '%' || ? || '%';也可以使用concat,但concat只能拼接两个字符串,像你那样直接使用concat拼接三个字符串的是不行的,使用concat正确的写法是 concat('%', concat(?, '%'))。
      

  2.   

    like concat('%',?,'%')这样拼也不行吗?
      

  3.   


    不可以concat只是拼接两个字符串的,想拼接两个以上的字符串就需要concat嵌套或者使用  ||  来拼接
      

  4.   


    不可以concat只是拼接两个字符串的,想拼接两个以上的字符串就需要concat嵌套或者使用  ||  来拼接
    为什么我在mybaits里面用concat可以拼接三个字符串?
     LIKE CONCAT('%',#{keyWords},'%')
    这样就没问题。
      

  5.   


    不可以concat只是拼接两个字符串的,想拼接两个以上的字符串就需要concat嵌套或者使用  ||  来拼接
    为什么我在mybaits里面用concat可以拼接三个字符串?
     LIKE CONCAT('%',#{keyWords},'%')
    这样就没问题。不好意思,在oracle里面的concat是无法直接拼接两个以上的字符串的,mysql里是可以的。
    你这个报错是因为注入的SQL没有占位符报错。打印下SQL语句就能找到问题了。
      

  6.   


    不可以concat只是拼接两个字符串的,想拼接两个以上的字符串就需要concat嵌套或者使用  ||  来拼接
    为什么我在mybaits里面用concat可以拼接三个字符串?
     LIKE CONCAT('%',#{keyWords},'%')
    这样就没问题。不好意思,在oracle里面的concat是无法直接拼接两个以上的字符串的,mysql里是可以的。
    你这个报错是因为注入的SQL没有占位符报错。打印下SQL语句就能找到问题了。
    原来是这样,受教了,谢谢
      

  7.   

    你把你凭借后的sql语句 输出来,就知道为啥报错了
      

  8.   

    也可以换用instr,效率上有可能高些
    instr(studentName, ?) > 0
      

  9.   

    你好 我分别试了你的方法 一二报同样错误 这是sql  String sql = "select studentNo,studentName,gradeId," +
    "address,identityCard from student " +
    "where studentName like ?)";
    Object[] params = {studentName="%"+studentName+"%"};  报错原因com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
      

  10.   

    第三种concat sql   String sql = "select studentNo,studentName,gradeId," +
    "address,identityCard from student " +
    "where studentName concat('%',concat(?,'%')))";
    Object[] params = {studentName};  报错原因  com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'concat('%',concat(null,'%')))' at line 1
      

  11.   

    Object[] params = {studentName="%"+studentName+"%"};
    这语句最好不要这样写,你最好写成
    Object[] params = {"%"+studentName+"%"};
    或者studentName="%"+studentName+"%";
    Object[] params = {studentName};
      

  12.   

    Object[] params = {studentName="%"+studentName+"%"};
    这语句最好不要这样写,你最好写成
    Object[] params = {"%"+studentName+"%"};
    或者studentName="%"+studentName+"%";
    Object[] params = {studentName};

    好嘞 我试试 麻烦你了
      

  13.   

    报错 这个错我在百度差不多非常接近一直不理解是什么意思 金山词霸个个翻译也不太明白 我用的内置MyEclipseTomact访问页面 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
      

  14.   


    这是SQL错误,你在调用的时候,打印SQL语句,还有传进去的参数。我看到你发的一个错误好像是传了个空参数进去
      

  15.   

    like concat('%',?,'%')
      

  16.   


    意思就是:你有一个sql的语法错误,请你人工检查sql第一行“)”附近,并使用和你mysql 版本相符合的正确语法。你可以试着在屏幕上输出你的sql 语句,然后把输出来的sql语句直接在mysql 上执行,看看问题出在哪里。
      

  17.   

    拼到?的入参不要写在sql里