我写的静态SQL是:
SELECT * FROM MyTable WHERE MY_ID = :id AND (:name is NULL OR MY_NAME = :name)
其中带:的变量是我传过来的参数,实现动态判断的是这一句:(:name is NULL OR MY_NAME = :name)
即如果变量name是null值的话查询条件MY_NAME = :name 就忽略
我在oracle中可以正确运行这个SQL,但是在DB2中报错:"sql语句包含无效参数标记的使用" 请问DB2有什么静态SQL语句实现这样查询条件动态判断?
SELECT * FROM MyTable WHERE MY_ID = :id AND (:name is NULL OR MY_NAME = :name)
其中带:的变量是我传过来的参数,实现动态判断的是这一句:(:name is NULL OR MY_NAME = :name)
即如果变量name是null值的话查询条件MY_NAME = :name 就忽略
我在oracle中可以正确运行这个SQL,但是在DB2中报错:"sql语句包含无效参数标记的使用" 请问DB2有什么静态SQL语句实现这样查询条件动态判断?
String sql = "SELECT * FROM MyTable WHERE MY_ID = ? AND (? is NULL OR MY_NAME = ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setObject(id);
pstmt.setObject(name);
pstmt.setObject(name);
pstmt.setObject(2,name);
pstmt.setObject(3,name);
你的SQL我试过了,报错:“语句包含无效参数标记的使用”
有二个办法
用createStatement
SQL语句已经处理过参数了的
另一种是
用上if语句
在java里先判断你的参数是不是null
如果是null...
如果不是null...