SQL 引號中的問號在PrepareStatement 中不被看做是佔位符

  SQL 引號中的問號在PrepareStatement 中不被看做是佔位符。java

  如:SELECT P.NAME, S.YEAR, S.QUANTITY FROM SALES S LEFT JOIN PRODUCT P ON S.PRODUCT_ID = P.ID WHERE P.NAME LIKE '%?%'sql

  會報java.sql.SQLException: 無效的列索引。oracle

  能夠用字符串拼接的方式處理,拼接能夠是在SQL 上,也能夠是在傳參的時候處理。索引

  即字符串

    1、SQL 改寫爲SELECT P.NAME, S.YEAR, S.QUANTITY FROM SALES S LEFT JOIN PRODUCT P ON S.PRODUCT_ID = P.ID WHERE P.NAME LIKE '%' || ? || '%'  (這是oracle 的寫法)io

    2、SQL 改寫爲SELECT P.NAME, S.YEAR, S.QUANTITY FROM SALES S LEFT JOIN PRODUCT P ON S.PRODUCT_ID = P.ID WHERE P.NAME LIKE ?字符

      傳參時prepareStatement.setString(theIndex, "%" + param + "%");

相關文章
相關標籤/搜索