私はこのような文を実行しています。なぜVARCHAR比較の予期しない結果が得られますか?
fld1 VARCHAR(5);
Select * from MyTable where fld1 = 'HELLOWORLD';
はテーブルでのみFLD1 =「ハロー」、何らかの理由で結果セットは、結果行FLD1 =「ハロー」と私を与えるがあります。
fld1がVARCHAR 5の場合、明らかにすべての値を文字列に取らない理由は 'HELLOWORLD'です。
私の方法:
public void Consulta(){
COB_ConexionModulo connPool = null;
COB_ResultadoConexion rc = null;
Connection con = null;
StringBuffer sbQry = new StringBuffer();
PreparedStatement pstm = null;
ResultSet rs = null;
COB_Utils util = new COB_Utils();
try {
connPool = COB_ConexionModulo.instance();
rc = connPool.getConnection();
con = rc.getConexion();
if(!(con == null)){
sbQry = new StringBuffer("SELECT NAME FROM TEST.MYTABLE WHERE NAME = ?");
pstm = con.prepareStatement(sbQry.toString());
pstm.setString(1, "HELLOWORLD");
util.setInicioEjecucion();
rs = pstm.executeQuery();
util.imprimeTiempoEjecucion(MSINF,sbQry.toString());
while (rs.next()){
System.err.println(rs.getString("NAME"));
}
} else {
logger.info(MSINF + "No hay conexion");
}
} catch (Exception e) {
logger.error(MSERR + "Consulta()_" + e);
}finally {
try {if (con != null) {con.close();con = null;}} catch (SQLException sqle) {con = null;}
}
}
Images in order: 1.- Table Script 2.- Table Values 3.- Query Result.
何が起こるべきではない記述(と私はSQLを使用してそれを再現しようとすると、実際にはそうでありません)。この動作を実証するために_complete_ minimalの例を作成して投稿し、DB2のバージョンとプラットフォームについて言及することもできます。あなたのJavaコードに誤りがあると思われます。 – mustaccio
あなたはどんなJDBCドライバを使用していますか? – mustaccio
私はcom.ibm.as400.access.AS400JDBCDriverを使用しています –